最近大家都在讨论C#的执行效率问题。由于采用的测试方法不同,测试结果差异很大。有些人得到结论,C#的速度竟然比 C++ 慢 20 倍!但是这样的测试是没有准确性的。

为什么这么说呢?语言的执行效率是要考虑编译到机器码后用户代码执行的紧凑性和高效性,而不是代码本身的执行速度。因为代码可以优化,.NET framework 也在升级,但编译的机器码却是死的。编译机制才是影响执行效率的最重要的原因。其它原因都不是根本原因

单从计算和执行的角度来说,C#应该还是比较快的。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
using System;
 
namespace test
{
    public class test
    {
        static void Main()
        {
            long j = 0;
            int t = Environment.TickCount;
            for (int i = 0; i < = 10000000; i++)
            {
                j += i;
            }
            Console.WriteLine("Time:{0},Return:{1}.", Environment.TickCount - t, j);
            Console.ReadLine();
        }
    }
}

结果用时:140 RETURN: 50000005000000