Chinaunix首页 | 论坛 | 博客
  • 博客访问: 133958
  • 博文数量: 94
  • 博客积分: 1572
  • 博客等级: 上尉
  • 技术积分: 925
  • 用 户 组: 普通用户
  • 注册时间: 2010-08-04 00:03
文章分类

全部博文(94)

文章存档

2011年(94)

我的朋友

分类: LINUX

2011-06-22 18:06:00

由于工作中优化的要求,我对4中常用的内存访问速度进行了测试:
heap(堆)、stack(栈)、shm(共享内存)、mmap(内存映射)

其中 heap、stack 用于进程内的内存访问。shm和mmap用于进程间内存访问。

执行memcpy的测试结果如下:

【1514 字节】
stack cost = 2 us
heap cost = 2 us
mmap cost = 10 us
shm cost = 15 us

【10240 字节】
stack cost = 2 us
heap cost = 16 us
mmap cost = 35 us
shm cost = 28 us

【102400 字节】
stack cost = 2 us
heap cost = 201 us
mmap cost = 364 us
shm cost = 257 us

简单的测试,但是可以看出一些规律:栈的速度最快,毋庸置疑。其次是堆,大家也很好理解。

shm和mmap表现可以看出来:mmap是比较不稳定的一种共享内存访问方式,随着数据变大和系统资源紧张它的效率回急剧下降。shm被称为进程通信中最快的方式,其发挥是比较稳定的(相比比较于mmap),但是这只是相对于其他进程通讯方式,和堆栈还是无法比的啊!

我们系统中有很多地方没有使用共享内存的必要,当时一水的使用了shm。毕竟没想到速度居然查的这么离谱。
看来还要进行整理啊。


阅读(2703) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~