C++与C#的内存映射

来源:互联网 发布:游戏币充值软件 编辑:程序博客网 时间:2024/06/17 12:24

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

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新增加了内存映射的功能,以后有空试一试

原创粉丝点击