栈为什么效率比堆高
总结如下:
1、有寄存器直接对栈进行访问(esp,ebp),而对堆访问,只能是间接寻址。
也就是说,可以直接从地址取数据放至目标地址;使用堆时,第一步将分配的地址放到寄存器,然后取出这个地址的值,然后放到目标地址。
2、栈中数据cpu命中率更高,满足局部性原理。
3、栈是编译时系统自动分配空间,而堆是动态分配(运行时分配空间),所以栈的速度快。
4、栈是先进后出的队列结构,比堆结构相对简单,分配速度大于堆。
栈为什么效率比堆高
总结如下:
1、有寄存器直接对栈进行访问(esp,ebp),而对堆访问,只能是间接寻址。
也就是说,可以直接从地址取数据放至目标地址;使用堆时,第一步将分配的地址放到寄存器,然后取出这个地址的值,然后放到目标地址。
2、栈中数据cpu命中率更高,满足局部性原理。
3、栈是编译时系统自动分配空间,而堆是动态分配(运行时分配空间),所以栈的速度快。
4、栈是先进后出的队列结构,比堆结构相对简单,分配速度大于堆。