日期:2014-05-20  浏览次数:20950 次

*****比較if-else與三目運算符的效率*****
C# code

using System;
using System.Collections.Generic;
using System.Text;
using System.Reflection;
using System.Diagnostics; 

namespace ConsoleApplication1
{
    class Program
    {
        static void Main()
        {
            compare();
        }
        
        private static void compare()
        {
            Console.WriteLine("*****比較if-else與三目運算符的效率*****");
            for (int j = 1; j < 20; j++)
            {
                Console.ForegroundColor = ConsoleColor.Yellow;
                Console.WriteLine("這是第" + j + "次測試。");
                Console.ForegroundColor = ConsoleColor.White;

                Stopwatch time1 = new Stopwatch();

                time1.Start();

                for (int i = 0; i < 100000000; i++)
                {
                    int temp = 0;
                    if (temp == 1)
                        temp = 1;
                    else
                        temp = 0;
                }

                time1.Stop();
                TimeSpan t1 = time1.Elapsed;
                Console.WriteLine("if-else執行時間是:"+t1.ToString());

                time1.Reset();

                Stopwatch time2 = new Stopwatch();

                time2.Start();
                for (int i = 0; i < 100000000; i++)
                {
                    int temp = 0;
                    temp = temp == 0 ? 1 : 0;
                }
                time2.Stop();
                TimeSpan t2 = time2.Elapsed;
                Console.WriteLine("三目運算符執行時間是:" + t2.ToString());

                time2.Reset();

                string conclusion = (t1 < t2) ? "if-else效率高" : "三目元算符效率高";
                float f1 = t1.Ticks;
                float f2 = t2.Ticks;
                float efficiency = (f1 < f2) ? f2 / f1 : f1 / f2;
                Console.ForegroundColor = ConsoleColor.Green;
                Console.WriteLine("結論是:" + conclusion + ",效率比是:" + efficiency.ToString());
            }
            Console.WriteLine("*****按下回車鍵關閉窗口*****");
            Console.ReadLine();
        }
    }
}




您新建一個控制臺程序,然後放入上述代碼執行。

我運行的結果如下(運行時間可能不一樣,不過結論都是一樣的)
*****比較if-else與三目運算符的效率*****
這是第1次測試。
if-else執行時間是:00:00:00.4057753
三目運算符執行時間是:00:00:00.3721558
結論是:三目元算符效率高,效率比是:1.090337
這是第2次測試。
if-else執行時間是:00:00:00.4042576
三目運算符執行時間是:00:00:00.3778070
結論是:三目元算符效率高,效率比是:1.070011
這是第3次測試。
if-else執行時間是:00:00:00.4047548
三目運算符執行時間是:00:00:00.3696018
結論是:三目元算符效率高,效率比是:1.09511
這是第4次測試。
if-else執行時間是:00:00:00.4016809
三目運算符執行時間是:00:00:00.3694739
結論是:三目元算符效率高,效率比是:1.08717
這是第5次測試。
if-else執行時間是:00:00:00.4046356
三目運算符執行時間是:00:00:00.3712424
結論是:三目元算符效率高,效率比是:1.08995
這是第6次測試。
if-else執行時間是:00:00:00.4015913
三目運算符執行時間是:00:00:00.3709766
結論是:三目元算符效率高,效率比是:1.082525
這是第7次測試。
if-else執行時間是:00:00:00.4050849
三目運算符執行時間是:00:00:00.3707200
結論是:三目元算符效率高,效率比是:1.092698
這是第8次測試。
if-else執行時間是:00:00:00.4048344
三目運算符執行時間是:00:00:00.3703526
結論是:三目元算符效率高,效率比是:1.093105
這是第9次測試。
if-else執行時間是:00:00:00.4026887
三目運算符執行時間是:00:00:00.3697847
結論是:三目元算符效率高,效率比是:1.088982
這是第10次測試。
if-else執行時間是:00:00:00.4053084
三目運算符執行時間是:00:00:00.3703975
結論是:三目元算符效率高,效率比是:1.094252
這是第11次測試。
if-else執行時間是:00:00:00.4023193
三目運算符執行時間是:00:00:00.3702872
結論是:三目元算符效率高,效率比是:1.086506
這是第12次測試。
if-else執行時間是:00:00:00.4036262
三目運算符執行時間是:00:00:00.3694859
結論是:三目元算符效率高,效率比是:1.092399
這是第13次測試。
if-else執行時間是:00:00:00.4018123
三目運算符執行時間是:00:00:00.3697152
結論是:三目元算符效率高,效率比是:1.086816
這是第14次測試。
if-else執行時間是:00:00:00.4028462
三目運算符執行時間是:00:00:00.3695552
結論是:三目元算符效率高,效率比是:1.090084
這是第15次測試。
if-else執行時間是:00:00:00.4023199
三目運算符執行時間是:00:00:00.3705751