|
|
1
6
这意味着int16数组占用的内存面积占int32的一半。因此,更多的区域可以放入处理器缓存中,因此可以非常快速地访问。 您可以在具有更多缓存的处理器上尝试该代码,并且差异可能更小。 也可以尝试使用更大的阵列。 |
|
|
2
2
数组是按字对齐的,但是没有理由让数组中的条目按字对齐。 |
|
|
3
1
几个因素
2) 这将是有趣的,看看什么IL是产生的。由于您的代码非常简单(迭代和加法),编译器可能会对此进行优化,可能会在更大的寄存器中填充多个uint16,并对每条指令执行多个加法 |
|
|
4
1
只是一个小问题:UInt16数组的内存使用量较小,改善了内存特性(GC、缓存,谁知道还有什么)。由于分配似乎不太多,我猜缓存是主要因素。
另外,您应该注意基准测试可能是一项棘手的工作—看起来您的时间可能包括一些JIT编译,这可能会扭曲结果。你可以试着颠倒测试的顺序
jonskeet有(或有)一个简单的基准框架,他在考虑这些影响时编写了这个框架。我不知道它是否仍然可用(甚至适用);也许他会评论。 |
|
|
5
1
两件事 :
|
|
|
Megrez7 · C#ToArray转换合并为一行,导致数组元素更改 1 年前 |
|
|
bairog · 从按属性筛选的对象数组字典中创建值数组 1 年前 |
|
|
Anka Hanım · 关于结构和动态数组地址的问题 1 年前 |
|
|
Geremia · 2D NumPy数组+1D数组? 1 年前 |
|
|
MARTIN · 交换第一个和最后一个单词,反转所有中间的字符 1 年前 |
|
|
Paul Williams · 迭代数组时输出有问题 1 年前 |