我的问题比较简单。在 32 位平台上,最好使用 Int32,而不是短或长,因为 cpu 一次处理 32 位。那么在 64 位架构上,这是否意味着使用 longs 来提高性能会更快?我创建了一个快速而肮脏的应用程序,它复制 int 和 long 数组来测试基准。这是代码(我确实警告过它很脏):
static void Main(string[] args)
{
var lar = new long[256];
for(int z = 1; z<=256;z++)
{
lar[z-1] = z;
}
var watch = DateTime.Now;
for (int z = 0; z < 100000000; z++)
{
var lard = new long[256];
lar.CopyTo(lard, 0);
}
var res2 = watch - DateTime.Now;
var iar = new int[256];
for (int z = 1; z <= 256; z++)
{
iar[z - 1] = z;
}
watch = DateTime.Now;
for (int z = 0; z < 100000000; z++)
{
var iard = new int[256];
iar.CopyTo(iar, 0);
}
var res1 = watch - DateTime.Now;
Console.WriteLine(res1);
Console.WriteLine(res2);
}
它产生的结果使 long 大约是 int 的 3 倍。这让我很好奇我是否应该开始使用 longs 进行计数器等。我也做了一个类似的计数器测试,long 的速度明显更快。有人对此有任何意见吗?我也明白即使多头更快,它们仍然会占用两倍的空间。
最佳答案
不可以。在 32 位 CPU 上执行 64 位需要更长的时间,因为 CPU 一次只能处理 32 位。 64 位 CPU 将忽略丢失的 32 位。
另外,尽量不要抢先优化太多。仅在存在明显瓶颈时进行优化。
关于.net - Int32 vs Int64 在 64 位平台上的性能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7375956/