我的问题比较简单。在32位平台上,由于CPU一次处理32位,因此最好使用Int32而不是short或long。那么在64位架构上,是否使用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);
}
它产生的结果比int类型快大约3倍,这使我好奇是否应该开始使用long类型作为计数器等。我还进行了类似的计数器测试,发现long类型速度略微更快。有人对此有任何建议吗?我也理解,即使long类型更快,它们仍将占用两倍的空间。