for循环与while循环效率对比·5年以下编程经验必看C#】
生活随笔
收集整理的這篇文章主要介紹了
for循环与while循环效率对比·5年以下编程经验必看C#】
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
for效率測試代碼:
using System; using System.Diagnostics; namespace Action {class Program{static void Main(string[] args){GC.Collect();//清理一下先Random ra = new Random();int count = 1000000;//100WDateTime start = DateTime.Now;for (int i = 0; i < count; i++){new String(""+i);}DateTime end = DateTime.Now;double usedMemory = Process.GetCurrentProcess().WorkingSet64 / 1024.0 / 1024.0;Console.WriteLine("耗時:" + (end - start).TotalMilliseconds + "毫秒");Console.WriteLine("消耗內存:" + usedMemory + "M");}} }100W次消耗時間50.88ms,消耗內存19.50M
while效率測試代碼:
using System; using System.Diagnostics; namespace Action {class Program{static void Main(string[] args){GC.Collect();//清理一下先Random ra = new Random();int count = 1000000;//100WDateTime start = DateTime.Now;int i = 0;while (i < count){new String("" + i);i++;}DateTime end = DateTime.Now;double usedMemory = Process.GetCurrentProcess().WorkingSet64 / 1024.0 / 1024.0;Console.WriteLine("耗時:" + (end - start).TotalMilliseconds + "毫秒");Console.WriteLine("消耗內存:" + usedMemory + "M");}} }100W次消耗時間50.92ms,消耗內存19.59M
編碼文件對比:
for:
while:
由于不能編入太多文字就只能截圖了。
總結:
1、for循環與while循環效率測試上看差不多。
2、從編碼上看,編譯的exe文件完全相同,應該字節碼是一樣一樣的。
3、在C#中兩種循環效果相同。
單獨方法編譯測試:
public void forTest(){int i;for (i = 0;i<100000000;i++){}} public void whileTest(){int i=0;while (i<100000000){i++;}}但看兩端代碼編譯后Code都一樣:【i小于100000000】
Code:stack=5, locals=4, args_size=10: invokestatic #2 // Method java/lang/System.currentTimeMillis:()J3: lstore_14: iconst_05: istore_36: iload_37: ldc #3 // int 1000000009: if_icmpge 1812: iinc 3, 115: goto 618: getstatic #4 // Field java/lang/System.out:Ljava/io/PrintStream;21: invokestatic #2 // Method java/lang/System.currentTimeMillis:()J24: lload_125: lsub26: invokevirtual #5 // Method java/io/PrintStream.println:(J)V29: return?
總結
以上是生活随笔為你收集整理的for循环与while循环效率对比·5年以下编程经验必看C#】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 计算某一段程序消耗的内存和时间【C#】
- 下一篇: 那些《西游记》中你不知道的野史,信不信由