堆栈构造函数 - 作为初始容量放置什么?

时间:2014-08-18 10:27:32

标签: c# performance stack

MSDN上显示的构造函数之一采用Int32参数表示初始容量。

上述文档页面上还有一条说明如下:

  

如果Count小于堆栈容量,则Push为O(1)操作。如果需要增加容量以容纳新元素,则Push变为O(n)操作,其中n为Count。 Pop是O(1)操作。

我的情况是我真的不知道给我的堆栈有多少初始容量。高估你认为自己需要的东西会更好吗?因为初始容量太低会导致性能下降吗?

在性能方面传递高初始容量有什么缺点?

1 个答案:

答案 0 :(得分:3)

在内部,Stack<T>内的存储阵列增长exponentially,这意味着amortized O(1) cost to add an element。因此,如果您不知道正确的初始容量,请不要担心它并使用default constructor,无论如何,性能都会很好。