随笔 - 113  文章 - 0  评论 - 218  阅读 - 73万

比较无聊的while与for的较量。

谈起程序循环,一般都会想到while或者for来控制。

但是两者之间除了大家熟识的控制结构有所不同之外,两都运行效率又是如何。最近比较做了一个简单而且无聊的比较,发现两者运行效率的确略不同。

之前在 彭博 著 《游戏编程指南》一书中看过说 for(;;)的执行速度比while(1)要快。书中的描述是用C++.

为验证作者的观点,我用C#写了简单的测试语句(在Vs2008上运行),对比一下。结果相反。

先看简单的测试程序。

1.用while循环

           DateTime dt1 = DateTime.Now;

            for (long i = 0; i < 100000000; i++)
            {
                while (true)//812.5
                {
                    if (i >= 0)
                        break;
                }
            }
            DateTime dt2 = DateTime.Now;
            Console.WriteLine("时间是:{0}毫秒", (dt2 - dt1).TotalMilliseconds);

输入出结果:时间是:812.5毫秒

2.用户for循环简单测试程序

           DateTime dt1 = DateTime.Now;

            for (long i = 0; i < 100000000; i++)
            {

               for (; ; )//828.125
                {
                    if (i >= 0)
                       break;
                }
            }
            DateTime dt2 = DateTime.Now;
            Console.WriteLine("时间是:{0}毫秒", (dt2 - dt1).TotalMilliseconds);

输入出结果:时间是:828.125毫秒

两者相差是15毫秒左右。我不知道是我的测试程序的问题,还是作者说错了?两者真正的内核调度是如何的?希望高人指点。

posted on   陈国利  阅读(451)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」
< 2010年11月 >
31 1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 1 2 3 4
5 6 7 8 9 10 11

点击右上角即可分享
微信分享提示