Mig*_*uel 4 .net c# performance
早上好,下午或晚上,
直到今天,我认为比较是基本的处理器指令之一,因此它是计算机中可以做的最快的操作之一...另一方面,我知道乘法有时比较棘手并涉及大量的位操作.但是,看到以下代码的结果我有点震惊:
Stopwatch Test = new Stopwatch();
int a = 0;
int i = 0, j = 0, l = 0;
double c = 0, d = 0;
for (i = 0; i < 32; i++)
{
Test.Start();
for (j = Int32.MaxValue, l = 1; j != 0; j = -j + ((j < 0) ? -1 : 1), l = -l)
{
a = l * j;
}
Test.Stop();
Console.WriteLine("Product: {0}", Test.Elapsed.TotalMilliseconds);
c += Test.Elapsed.TotalMilliseconds;
Test.Reset();
Test.Start();
for (j = Int32.MaxValue, l = 1; j != 0; j = -j + ((j < 0) ? -1 : 1), l = -l)
{
a = (j < 0) ? -j : j;
}
Test.Stop();
Console.WriteLine("Comparison: {0}", Test.Elapsed.TotalMilliseconds);
d += Test.Elapsed.TotalMilliseconds;
Test.Reset();
}
Console.WriteLine("Product: {0}", c / 32);
Console.WriteLine("Comparison: {0}", d / 32);
Console.ReadKey();
}
Run Code Online (Sandbox Code Playgroud)
结果:
产品: 8558.6
比较: 9799.7
快速解释:j是一个辅助的替代变量,(...), 11, -10, 9, -8, 7, (...)直到它达到零,l是一个存储j符号的变量,并且a是测试变量,我希望它总是等于模数j.测试的目的是检查a使用乘法或条件运算符设置为此值是否更快.
有人可以对这些结果发表评论吗?
非常感谢你.