![]() |
1
16
你可以使用 win32 memcpy 通过p-invoke函数。
除了从托管代码调用Win32函数的(轻微)开销之外,实际的复制性能应该与使用相同函数的C/C++代码相同。 不要忘记,您也可以使用不安全的块(和编译器选项),并且一次只复制一个字节/int/long的数据:
这消除了平台依赖性,但是您需要非常小心边界检查和指针算法。 |
![]() |
2
7
如果您可以以.NET 4.6或更高版本为目标,请尝试 System.Buffer.MemoryCopy . 我相信这个方法和其他使用p/invoke的解决方案的主要区别在于,这个方法避免了较小规模的p/invoke,而只是直接进行复制。 Here's .NET核心中的实施要点(最新版本为2018-06-19)。 |
![]() |
3
5
没有对性能发表评论,纯粹是因为我没有测试它。您可以通过interop从kernel32使用copymemory或movememory来实现与非托管拷贝相同的性能。 这是copymemory的声明
|
![]() |
4
1
不过,要记住的是
这是一份声明
我想是为了记录
|
![]() |
A B · C#Excel自动调整列避免长文本时出错 4 月前 |
![]() |
Megrez7 · C#ToArray转换合并为一行,导致数组元素更改 4 月前 |
![]() |
Aycon · 在工厂方法中释放部分创建的对象的正确方法是什么? 4 月前 |
|
Sei · Avalonia/WPF将路由器传递到控制模板 5 月前 |