我想创建一个非常基本的应用程序来测试64位与32位性能,只是为了看看哪一个在我的计算机上运行得最好。 令我惊讶的是,我发现x64比x86快约3倍。 我使用VS 2012 Ultimate编译发布,并作为一个独立的应用程序运行,无需调试。 这是一个带有按钮和2个文本框的WinForm应用程序。 在x64版本中需要大约120毫秒才能完成,而x86版本需要大约350毫秒。 此外,如果我将数据类型更改为int中的Int64,则两个代码路径的速度将变慢约3倍。
我知道x64在64位窗口上运行本机,32位通过WoW转换,但在线比较显示64位运行32位而没有显着的性能损失,除非它是使用我没有的Itanium CPU。 / p>
另一种可能性是VS2012编译器针对x64进行了更优化,但与通用VS优化相比,性能差异是3倍?
无论哪种方式,似乎我最好尽可能在我的机器上编译x64。 任何人都可以给我任何x86可能更好的简单案例吗?
这是我的测试代码。
DateTime startTime;
DateTime stopTime;
int waitValue;
private void button1_Click(object sender, EventArgs e)
{
string startText = textBox1.Text;
int value;
if (int.TryParse(startText, out value))
{
waitValue = value - 1;
}
else
{
value = 1000000;
waitValue = value - 1;
textBox1.Text = value.ToString();
}
startTime = DateTime.Now;
for (int ii = 0; ii < value; ii++)
{
shortProcess(ii);
}
}
private int shortProcess(int value)
{
int startValue = value;
int useVal = startValue;
for (int ii = 0; ii < 1000; ii++)
{
useVal = ii;
}
useVal = startValue;
checkValue(useVal);
return useVal;
}
private void checkValue(int value)
{
if (value >= waitValue)
{
stopTime = DateTime.Now;
//textBox2.Text = (stopTime.Ticks - startTime.Ticks).ToString();
textBox2.Text = (stopTime.Subtract(startTime).TotalMilliseconds).ToString();
}
}
答案 0 :(得分:0)
这里回答了一个非常类似的问题:Why is this faster on 64 bit than 32 bit?
该测试更复杂,有更多数学,但结果与我的相似甚至更极端,这意味着x64是可行的方法。