简单: List<float[]>
+ List<int[]>
vs。 List<object>
两者都投了?
哪个会提供更好的性能?差异非常重要吗?
float[]
或int[]
。所以我在想如何最好地使用它们:
List<float[]>
和List<int[]>
List<object>
中并将数组转换为对象并返回问题是通用和投射的速度有多慢? 或者如何有效地存储我的阵列?
<小时/> ADD:所有数组都经过“重”计算。单int
和float
值不会相互转换。它们只在计算完成时相互影响。 float为我的计算提供了足够的准确性,不需要双倍。 (数组大小最多为600.但这可能会改变。)
答案 0 :(得分:2)
Know What Things Cost列出了各种托管操作的典型时间。如果你将它们解释为 relative 并将它们带入一粒盐,那么它们在处理器代之间相对稳定。
但要注意:我还没有理解为什么它列出double add比float add慢。底层的指示是相同的(或者我最后检查过,IIRC) - 这可能是记忆效应,或者特定于托管代码的东西。
确保浮点数具有足够的准确度。 Mul / div很好,但重复的加/减精度损失会很快累积。快速,错误的结果是没有用的 - 特别是如果它们显然是错误的。
通常我会默认加倍并使用float只有在我能确保准确性足够的时候才能证明我会遇到内存访问问题(比如内部循环超过典型的L1 / L2缓存大小或性能)测量)。
List<float[]>
与多个列表相比应该没有明显的区别,前提是阵列不是很小,并且您没有经常调整大小。
非通用列表是出路。
答案 1 :(得分:0)
我会做bluh[i] as TheTypeINeed
,而不是真的担心它。铸造整个清单似乎很愚蠢。
我还会注意以下内容:
我觉得在架构层面上还有其他更基本的问题。