是谁愚弄了我的C#?

来源:互联网 发布:阿里云服务器 windows 编辑:程序博客网 时间:2024/06/10 03:53

事因是这样的,前段时间想测量一下C#的效率,然后写了两段代码,我以前的Blog也贴过,这里再贴一次:

 

//C++:void sort(int *a, int length){   for (int i = 1; i < length; i++)   {       int t = a[i];       int j = i;       while ((j > 0) && (a[j - 1] > t))       {           a[j] = a[j - 1];//change           --j;       }       a[j] = t;   }}  int _tmain(int argc, _TCHAR* argv[])   {       int buffer[30000];    int length = 30000;    srand((unsigned)GetCurrentTime());    for(int i = 0; i < length; i++)    {        buffer[i] = rand();    }    DWORD dwStart,dwStop;    dwStart = GetTickCount();    sort(buffer,length);    dwStop = GetTickCount();    cout<<"Time:"<<(dwStop - dwStart)<<endl;  int c; cin>>c;    return 0;}//Debug  1.25 second//Release 0.35 second//C#:        public void Sort(int[] arr)        {            for (int i = 1; i < arr.Length; i++)            {                int t = arr[i];                int j = i;                while ((j > 0) && (arr[j - 1] > t))                {                    arr[j] = arr[j - 1];//change                         --j;                }                arr[j] = t;            }        }        static void Main(string[] args)        {            int[] iArrary = new int[30000];            Random rd = new Random();            for (int i = 0; i < 30000; i++)            {                iArrary[i] = rd.Next(0, 9999);            }            Program q = new Program();            long begin = DateTime.Now.Ticks;            q.Sort(iArrary);            long end = DateTime.Now.Ticks;            //for (int m = 0; m < 30000; m++)            //Console.WriteLine("{0}", iArrary[m]);            Console.Write(end - begin);            Console.ReadLine();        }//Debug  1.52 second//Release 0.90 second

奇怪的发现一个问题,Debug版本虽然只差了25%的效率,但是Release版本却差了55%的效率..想到事情的严重性,就去了www.asp.net讨说法.这是原贴的地址:http://forums.asp.net/t/1282634.aspx

然后几位高手说了自己的想法.最后拿出了指针和linq来排序.结果除开用了底层的linq以外,Relase版本的排序没有一个是有理想效率的.试问,C#这样做的目的真的是为了安全性吗?为什么不能将所有代码一口气生成本地代码呢?还是为了商业目的?到底是微软的阴谋,还是真的为了我们方便?值得深思.

原创粉丝点击