C++与C#的内存映射

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值