|
|
1
6
这意味着int16数组占用的内存面积占int32的一半。因此,更多的区域可以放入处理器缓存中,因此可以非常快速地访问。 您可以在具有更多缓存的处理器上尝试该代码,并且差异可能更小。 也可以尝试使用更大的阵列。 |
|
|
2
2
数组是按字对齐的,但是没有理由让数组中的条目按字对齐。 |
|
|
3
1
几个因素
2) 这将是有趣的,看看什么IL是产生的。由于您的代码非常简单(迭代和加法),编译器可能会对此进行优化,可能会在更大的寄存器中填充多个uint16,并对每条指令执行多个加法 |
|
|
4
1
只是一个小问题:UInt16数组的内存使用量较小,改善了内存特性(GC、缓存,谁知道还有什么)。由于分配似乎不太多,我猜缓存是主要因素。
另外,您应该注意基准测试可能是一项棘手的工作—看起来您的时间可能包括一些JIT编译,这可能会扭曲结果。你可以试着颠倒测试的顺序
jonskeet有(或有)一个简单的基准框架,他在考虑这些影响时编写了这个框架。我不知道它是否仍然可用(甚至适用);也许他会评论。 |
|
|
5
1
两件事 :
|
|
|
A B · C#Excel自动调整列避免长文本时出错 1 年前 |
|
|
Megrez7 · C#ToArray转换合并为一行,导致数组元素更改 1 年前 |
|
Aycon · 在工厂方法中释放部分创建的对象的正确方法是什么? 1 年前 |
|
|
Sei · Avalonia/WPF将路由器传递到控制模板 1 年前 |