【发布时间】:2010-09-20 10:10:55
【问题描述】:
当推断垃圾收集语言中的运行时成本时,以“n”(列表中的元素数)表示的语句(例如 myList = null;)的成本是多少?为了论证起见,将列表视为引用类型的单链表,无需终结。
更一般地说,我正在寻找有关如何使用 GC 语言分析运行时成本的任何信息。
【问题讨论】:
当推断垃圾收集语言中的运行时成本时,以“n”(列表中的元素数)表示的语句(例如 myList = null;)的成本是多少?为了论证起见,将列表视为引用类型的单链表,无需终结。
更一般地说,我正在寻找有关如何使用 GC 语言分析运行时成本的任何信息。
【问题讨论】:
我自己的想法是,根据收集器的实现,成本可能是 O(1) 或 O(n)。在标记和清除收集器中,根本无法到达无法到达的对象,因此我可以想象清除它们不会产生任何成本。 (事实上,简单地保持对象存活是有持续成本的,大概是通过使用代数来摊销的。)相反,在一个简单的引用计数收集器中,我可以很容易地想象它花费 O(n) 来进行清理......
在设计算法时,我不清楚如何推理。
【讨论】:
我怀疑您可以假设该语句的 the amortized costs 为 O(1)。在实践中,这就是我所做的,我从未发现让我怀疑这个假设不正确的情况。
【讨论】: