由于工作中优化的要求,我对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。毕竟没想到速度居然查的这么离谱。
看来还要进行整理啊。
阅读(2790) | 评论(0) | 转发(0) |