读书人

堆跟栈速度比较

发布时间: 2012-11-09 10:18:48 作者: rapoo

堆和栈速度比较

至于堆和栈哪个更快,从两方面来考虑:

???? 1.分配和释放,堆在分配和释放时都要调用函数(MALLOC,FREE),比如分配时会到堆空间去寻找足够大小的空间(因为多次分配释放后会造成空洞),这些都会花费一定的时间,具体可以看看MALLOC和FREE的源代码,他们做了很多额外的工作,而栈却不需要这些。

???? 2.访问时间,访问堆的一个具体单元,需要两次访问内存,第一次得取得指针,第二次才是真正得数据,而栈只需访问一次。另外,堆的内容被操作系统交换到外存的概率比栈大,栈一般是不会被交换出去的。

???? 综上所述,站在操作系统以上的层面来看,栈的效率比堆高,对于应用程序员,这些都是透明的,操作系统做了很多我们看不到的东西。

http://topic.csdn.net/t/20050529/13/4043607.html

读书人网 >编程

热点推荐