C# 调整阵列性能?

C# 调整阵列性能?,c#,.net,arrays,performance,resize,C#,.net,Arrays,Performance,Resize,我想知道不断调整字节数组的大小是否会对性能产生重大影响。我正在向一个类添加数据,如果该类已经包含该数据类型,我需要将其添加到现有的字节数组中,这意味着我需要调整其大小。问题是,我有一些数据类型将批量添加,这意味着可能会发生多个数组大小调整 这会对性能产生巨大影响吗?这个类可能对性能非常关键 如果是这样的话,那么我可能不得不做一次设计大修。如果需要调整大小,那么您应该使用列表。数组无法调整大小,因此您必须创建一个全新的数组,然后在添加其他内容之前将旧内容复制到新数组中(如果您所指的是新内容,则会这

我想知道不断调整字节数组的大小是否会对性能产生重大影响。我正在向一个类添加数据,如果该类已经包含该数据类型,我需要将其添加到现有的字节数组中,这意味着我需要调整其大小。问题是,我有一些数据类型将批量添加,这意味着可能会发生多个数组大小调整

这会对性能产生巨大影响吗?这个类可能对性能非常关键


如果是这样的话,那么我可能不得不做一次设计大修。

如果需要调整大小,那么您应该使用
列表。数组无法调整大小,因此您必须创建一个全新的数组,然后在添加其他内容之前将旧内容复制到新数组中(如果您所指的是新内容,则会这样做)

List
在内部使用数组,但会优化调整大小,因此您无需处理它


基本上,一旦内部数组已满且添加了新内容,
List
将使内部数组大小加倍,因此调整大小的情况实际上应该很少发生-如果直接调整数组大小,则必须采用类似的策略并保留“大小计数器”或者在添加任何内容时承担调整性能的成本。

是的,这会影响性能。调整数组大小不仅仅是使原始数组变长或变短,它还将创建一个新数组,并在必要时将数据从旧数组复制到新数组


正如注释中所建议的,使用动态容器,如List或ArrayList,而后者不是类型save,但使用起来很方便,我更喜欢这样。您可以查看:

您应该看到,相对于代码的其他部分,使用探查器执行代码是否占用了大量时间。VS有一个内置的,有一些免费的,或者像ANTS或dotTrace这样付费的。构建它,分析它,如果它太慢,重构它。你认为性能最关键的地方很可能不是性能最关键的地方:)@JayOtterbein事实上,我从来没有费心去摆弄一个剖析器,但对我来说,开始可能是个好主意。@Alex,如果您没有使用探查器或以其他方式测量代码的性能,则不应声称代码是性能关键的。正如答案中所说,您应该使用列表而不是数组,但出于可读性/正确性的原因,而不是性能的原因。列出已编写/测试的支持调整大小的代码(与使用数组手工制作的代码不同)(无论您有多优秀)。如果您想知道某一行代码是否会对性能产生不利影响,请设置一个客户可以接受的目标,衡量代码的性能,并查看它是否超过目标。如果成功了,很好,你就完了。如果它没有,那么去找一个分析器,找到最慢的东西,并修复它。在互联网上询问不知道您的代码或您的客户的陌生人会占用您编写性能测试的时间。