Wednesday, July 25, 2012

[C#] Redundant Object.ToString() call

如果你有用ReSharper,有時候你在看code會發現到ReSharper跟你喊這個
Redundant Object.ToString() call
其實就是個很簡單的多了一次多餘的ToString(),有些人會覺得,應該差不了多少吧,所以也不會care....其實不少人看見warning都不管的 -_-

真的在速度上差不了多少嗎 ? 來試試吧,我寫了個小程式。
Process proc = Process.GetCurrentProcess();
            string str = "1";
            string sTarget;
            TimeSpan sTime=proc.TotalProcessorTime;
            for (int i = 0; i < 100000000; i++) //100,000,000
            {
                sTarget = str; //change here
            }
            Console.WriteLine(proc.TotalProcessorTime-sTime);

            Console.ReadLine();
這樣跑了五次做,平均時間是0.26832172 sec
然後把 sTarget = str; 改成 sTarget = str.ToString(); 一樣跑五次,平均時間是0.42432272 sec

有差嗎 ? 有的,加了多餘的.ToString(),同樣的動作時間多了58.14%,所以小細節多少還是有差的。

No comments:

Post a Comment