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;//100W
            DateTime 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


微信图片_20220112155031.png


while效率测试代码:


using System;
using System.Diagnostics;
namespace Action
{
    class Program
    {
        static void Main(string[] args)
        {
            GC.Collect();//清理一下先
            Random ra = new Random();
            int count = 1000000;//100W
            DateTime 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


微信图片_20220112155059.png


编码文件对比:


微信图片_20220112155115.png


for:


微信图片_20220112155130.png


while:


微信图片_20220112155149.png


由于不能编入太多文字就只能截图了。


微信图片_20220112155207.png


总结:


1、for循环与while循环效率测试上看差不多。


2、从编码上看,编译的exe文件完全相同,应该字节码是一样一样的。


3、在C#中两种循环效果相同。


单独方法编译测试:


public void forTest(){
        int i;
        for (i = 0;i&lt;100000000;i++){
        }
    }
public void whileTest(){
        int i=0;
        while (i&lt;100000000){
            i++;
        }
    }


但看两端代码编译后Code都一样:【i小于100000000】


Code:
      stack=5, locals=4, args_size=1
         0: invokestatic  #2                  // Method java/lang/System.currentTimeMillis:()J
         3: lstore_1
         4: iconst_0
         5: istore_3
         6: iload_3
         7: ldc           #3                  // int 100000000
         9: if_icmpge     18
        12: iinc          3, 1
        15: goto          6
        18: getstatic     #4                  // Field java/lang/System.out:Ljava/io/PrintStream;
        21: invokestatic  #2                  // Method java/lang/System.currentTimeMillis:()J
        24: lload_1
        25: lsub
        26: invokevirtual #5                  // Method java/io/PrintStream.println:(J)V
        29: return
相关文章
|
20天前
|
Go C语言
爱上C语言:分支与循环(循环篇)
爱上C语言:分支与循环(循环篇)
|
2月前
|
存储 算法 数据处理
深入浅出for循环语句——让重复任务变得简单高效
深入浅出for循环语句——让重复任务变得简单高效
17 1
|
2月前
|
并行计算 编译器 程序员
提升C/C++编程效率:深入C/C++ for循环的优化与应用
提升C/C++编程效率:深入C/C++ for循环的优化与应用
72 0
|
2月前
|
存储 算法 程序员
普通程序员,掌握这个技能,C语言反转数组只需1秒,效率翻倍无敌了!
普通程序员,掌握这个技能,C语言反转数组只需1秒,效率翻倍无敌了!
|
9月前
循环初级一(附小练习和详细代码答案)
循环初级一(附小练习和详细代码答案)
74 0
|
5月前
|
机器学习/深度学习 算法 C语言
【新手解答9】深入探索 C 语言:递归与循环的应用2
【新手解答9】深入探索 C 语言:递归与循环的应用2
41 0
|
5月前
|
算法 C语言 C++
【新手解答8】深入探索 C 语言:递归与循环的应用
【新手解答8】深入探索 C 语言:递归与循环的应用
33 0
|
9月前
循环初级二(附小练习及其代码答案)
循环初级二(附小练习及其代码答案)
46 0
循环 — 你必须要会的十五道编程题(2)
循环 — 你必须要会的十五道编程题(2)
循环 — 你必须要会的十五道编程题(2)
|
算法
循环 — 你必须要会的十五道编程题(1)
循环 — 你必须要会的十五道编程题(1)
163 0
循环 — 你必须要会的十五道编程题(1)