編程 2024-01-22 #00004 | 主題 : For Loop Comparison Record


1. One For loop vs Multi For loop 

以下為C#代碼:

        public static void Main(){

            var watch = System.Diagnostics.Stopwatch.StartNew();

            for(int i = 0; i < 100000;i++){

                Console.WriteLine("1 : "+i);

                Console.WriteLine("2 : "+i);

                Console.WriteLine("3 : "+i);

                Console.WriteLine("4 : "+i);

            }

            watch.Stop();

            var elapsedMs = watch.ElapsedMilliseconds;

            Console.WriteLine("Total Time : "+elapsedMs);

        }

所有由同一個ForLoop完成4個Console.WriteLine運作結果為 :

Total Time : 30412ms

        public static void Main(){

            var watch = System.Diagnostics.Stopwatch.StartNew();

            for(int i = 0; i < 100000;i++){

                Console.WriteLine("1 : "+i);

            }

            for(int i = 0; i < 100000;i++){

                Console.WriteLine("2 : "+i);

            }

            for(int i = 0; i < 100000;i++){

                Console.WriteLine("3 : "+i);

            }

            for(int i = 0; i < 100000;i++){

                Console.WriteLine("4 : "+i);

            }

            watch.Stop();

            var elapsedMs = watch.ElapsedMilliseconds;

            Console.WriteLine("Total Time : "+elapsedMs);

        }

所有由四個ForLoop完成4個Console.WriteLine運作結果為 :

Total Time : 31147ms

兩者相差只有 735ms

2. Straight For loop vs Nested For loop

以下為C#代碼:

        public static void Main(){

            var watch = System.Diagnostics.Stopwatch.StartNew();

            for(int i = 0; i < 1000;i++){

                for(int x = 0; x < 1000;x++){

                    Console.WriteLine("1 : "+i);

                }

            }

            watch.Stop();

            var elapsedMs = watch.ElapsedMilliseconds;

            Console.WriteLine("Total Time : "+elapsedMs);

        }

所有由四個ForLoop完成4個Console.WriteLine運作結果為 :

Total Time : 82723ms

        public static void Main(){

            var watch = System.Diagnostics.Stopwatch.StartNew();

            for(int i = 0; i < 1000000;i++){

                Console.WriteLine("1 : "+i);

            }

            watch.Stop();

            var elapsedMs = watch.ElapsedMilliseconds;

            Console.WriteLine("Total Time : "+elapsedMs);

        }

所有由四個ForLoop完成4個Console.WriteLine運作結果為 :

Total Time : 83617ms

兩者相差只有 894ms


結論 :
雖然得出的Result相同,但不同寫法運算速度不同,只不過差異其實不大,Data Structure 以及 Algorithm還是影響較大。




Published by