|
|
1
11
您担心性能-但是您有任何理由担心吗?我的猜测是,您根本没有对代码进行基准测试。 在用更高性能的代码替换可读、干净的代码之前进行基准测试。
在本例中,调用
虽然我怀疑可能有
它甚至不像序列类型被用于许多操作——只有一个调用
测量 在您将编码决策建立在性能之上之前。
|
|
|
2
3
弗雷奇
语句始终对IEnumerable或
|
|
|
3
2
一般来说,我会说,如果您要用泛型风格替换等效的非泛型接口(比如
和
支持真值类型(
一项脑残的合成基准测试显示:
快一倍 比半等效非通用:
免责声明 我意识到这个基准是合成的,它实际上并不关注 接口 就在这里(相当直接地分派对特定类型的虚拟方法调用)等等。然而,它说明了我的观点。 不要害怕仿制药 (至少不是出于性能原因)。 |
|
|
4
1
一般来说,增加的灵活性将值得它带来的微小性能差异。 |
|
|
5
1
第二个版本将该方法限制为接受sepcific类类型,不建议这样做。而且性能基本相同。 |
|
|
6
1
此建议的基本原因是创建一个适用于IEnumberable和List的方法是为了将来的灵活性。如果将来需要创建MySpecialStringsCollection,可以让它实现IEnumerable方法,并且仍然使用相同的方法。 从本质上说,我认为它是下降的,除非你注意到一个重要的,有意义的性能打击(如果你注意到任何,我会感到震惊);更喜欢一个更宽容的界面,它将接受比您现在期望的更多的内容。 |
|
|
7
1
所以
这个
|
|
|
8
0
接口只定义类实现的公共方法和属性的存在和签名。由于接口不是“独立的”,因此应该有 不 方法本身的性能差异,以及任何“铸造”惩罚(如果有)都应该太小而无法衡量。 |
|
|
9
0
正如其他人所说,过早优化是万恶之源。编写代码,通过热点分析运行代码,然后再考虑性能优化问题。 |
|
|
10
0
进入IEnumerable<&燃气轮机;可能会造成一些麻烦,因为您可能会收到执行不同的LINQ表达式,或者产生返回。在这两种情况下,您都不会有收藏,但 某物 你可以在上面重复。 因此,当您想要设置一些边界时,可以请求一个数组。打电话没问题 在传递参数之前,但您将确保没有隐藏的不同警告。 |