x64比Windows 7 64位的x86快多了,为什么?
本文关键字:为什么 x86 Windows 64位 x64 | 更新日期: 2023-09-27 18:15:53
我想创建一个非常基本的应用程序来测试64位和32位的性能,看看哪一个在我的电脑上运行得最好。令我惊讶的是,我发现x64比x86快3倍。我使用VS 2012 Ultimate编译发布,并作为一个独立的应用程序运行,没有调试。这是一个带有一个按钮和两个文本框的WinForm应用程序。在x64版本中,完成大约需要120毫秒,而x86版本大约需要350毫秒。此外,如果我将数据类型从int改为Int64,那么两个代码路径都会变慢3倍。
我知道x64在64位windows上本机运行,32位通过WoW转换,但是在线比较显示32位在64上运行没有明显的性能损失,除非它与我没有的Itanium CPU一起运行。
另一种可能性是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();
}
}
这里已经回答了一个非常类似的问题:为什么64位比32位更快?
那个测试更复杂,有更多的数学计算,但结果与我的相似,甚至更极端,这意味着x64是可行的。