zoukankan      html  css  js  c++  java
  • 比较无聊的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毫秒左右。我不知道是我的测试程序的问题,还是作者说错了?两者真正的内核调度是如何的?希望高人指点。

  • 相关阅读:
    201-STM32+Air724UG基本控制篇(阿里云物联网平台)-设备使用物模型Topic上报温湿度数据
    Sentinel Go 核心统计结构滑动窗口的深度解析
    golang sync.Mutex互斥锁的实现原理
    Golang-Scheduler原理解析
    Golang-Channel原理解析
    golang里channel的实现原理
    最长回文子序列
    GO语言的goroutine并发原理和调度机制
    golang 常见问题
    通过js给网页加上水印背景
  • 原文地址:https://www.cnblogs.com/cgli/p/1871943.html
Copyright © 2011-2022 走看看