关于我们

质量为本、客户为根、勇于拼搏、务实创新

< 返回新闻公共列表

C++与C#的内存映射

发布时间:2019-12-30 17:17:39

这几天试验了一下内存映射的效率,主要参考了网上的几篇资料

C# : http://blog.csdn.net/linux7985/article/details/5853358

C++:http://blog.csdn.net/believefym/article/details/1162461

根据第一篇文章的代码,封装了一个类ShareMemory,C#和C++各一份,方便进行内存映射

很奇怪的是C#的运行速度要比C++快很多!

在封装类的时候:

C# 中的Marshal.Copy( m_pwData, bytData, lngAddr, lngSize ); 内存拷贝这个功能,

对应C++中用的是memcpy。

C++耗时间的操作主要在memcpy,将映射得到的内存拷贝到一个new出来的BYTE动态数组中

好像memcpy 拷贝 堆分配的内存 的速度比Marshal.Copy要慢一些?

试图不用memcpy,直接sscanf读映射出来的内存,又报错,郁闷了。看来必须要memcpy

最后还是放弃了用C++,采用了C#。

据说.net 4.0新增加了内存映射的功能,以后有空试一试



/template/Home/Zkeys/PC/Static