【发布时间】:2014-07-21 22:52:04
【问题描述】:
在使用 for 循环时,如果我们使用用户定义的堆栈,那么该堆栈是否会在系统堆内存中创建?与系统堆栈相比,用户定义的堆栈将需要更多的时间来填充?谢谢
【问题讨论】:
标签: loops memory-management recursion stack heap-memory
在使用 for 循环时,如果我们使用用户定义的堆栈,那么该堆栈是否会在系统堆内存中创建?与系统堆栈相比,用户定义的堆栈将需要更多的时间来填充?谢谢
【问题讨论】:
标签: loops memory-management recursion stack heap-memory
堆是不是系统堆栈的所有内存,所以是的。用户定义的堆栈将驻留在堆上。
这一切都取决于。通常系统堆栈非常快,但我想你想使用用户定义的堆栈来不破坏堆栈,这意味着我们正在处理一个运行时,它添加它的帧,即使没有推送任何内容(没有参数)。在这种情况下,基于数组的堆栈可能会更快,因为您在每次迭代时推送的数据更少。
基于其他数据结构的堆栈在效率上会有所不同,但最终永远不会像数组那样高效。
我会一直使用系统堆栈,直到我确定我需要其他东西(在大多数语言中,您可以设置堆栈大小)并且您最终编写的代码更少,可读性和可理解性。
如果你需要做一个堆栈,那么首先做一个可读性。因此,它很可能变得比仅仅为系统堆栈增加内存要慢。
我打赌你可能知道3 rules of optimization
【讨论】: