如今网络上有一种呼声,说现在的编译器足够智能,会对代码自动地进行一些常见的优化,一些老的优化方法已经不再适用了,比如用右移代替除法运算、预计算等等。
很可惜,如今的C# 虽然具有一些编译优化的功能,但还不象网络上所传颂的智能编译器那样的智能。
经过实验发现,用右移代替除法运算、预计算等等技巧显然并未过时;经过实验发现:对于整形来说,右移一位确实比除以2要快一些,大约快了 2%。
using System;
namespace speed
{
class Program
{
static void Main(string[] args)
{
int i, j;
int source = 64556;
DateTime dt = DateTime.Now;
for (i = 0; i < 1000000000; i++)
{
j = source / 4;
}
TimeSpan ts = DateTime.Now - dt;
Console.WriteLine("/ cost time {0}", ts.ToString());
dt = DateTime.Now;
for (i = 0; i < 1000000000; i++)
{
j = source >> 2;
}
ts = DateTime.Now - dt;
Console.WriteLine(">> cost time {0}", ts.ToString());
Console.Read();
}
}
}
/ cost time 00:00:02.8941656 >> cost time 00:00:02.8731643