c# - C# 是否将结构数组分配为内存中的数组结构?
问题描述
我想知道在编写 c# 时这两种结构在内存中是否有任何区别?
我举了一个例子,两种结构都以相同的速度运行。
for (int i = 0; i < iterations; i++)
{
enArr[i].h = random.Next(0, 1000);
enArr[i].w = random.Next(0, 1000);
enArr[i].sum = Math.Sqrt(enArr[i].h)
+ Math.Sqrt(enArr[i].w);
Console.WriteLine($"AoS Sqr[{i}]: {enArr[i].sum}");
}
对比
for (int i = 0; i < iterations; i++)
{
entities.h[i] = random.Next(0, 1000);
entities.w[i] = random.Next(0, 1000);
entities.sum[i] = Math.Sqrt(entities.h[i])
+ Math.Sqrt(entities.w[i]);
Console.WriteLine($"SoA Sqr[{i}]: {entities.sum[i]}");
}
我预计最后一个会更快,因为 SoA 提供了连续的数据布局,但执行完全相同。
解决方案
推荐阅读
- r - randomForestExplainer 包的最小深度交互
- c - 如何使用 Alsa 库更改扬声器的音量?
- python - 如何设置顶级元素来显示下载进度?
- python - Python pandas:使用多列条件将数据框的索引值设置为另一个数据框作为列
- aws-lambda - AWS Lex - 如何将值从一个意图共享到其他意图
- android - 使用 Room 时如何对数据进行建模
- makefile - 具有不同源类型的 Makefile 不会注意到 make.depend
- python - 如何根据熊猫另一列中前一行的值组合一行中的值
- git - Git Add - 致命:添加文件失败
- mysql - 无法读取未定义续集的属性“findAll”