比较无聊的while与for的较量。
2010-11-08 17:28
274 查看
谈起程序循环,一般都会想到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毫秒左右。我不知道是我的测试程序的问题,还是作者说错了?两者真正的内核调度是如何的?希望高人指点。
但是两者之间除了大家熟识的控制结构有所不同之外,两都运行效率又是如何。最近比较做了一个简单而且无聊的比较,发现两者运行效率的确略不同。
之前在 彭博著 《游戏编程指南》一书中看过说 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毫秒左右。我不知道是我的测试程序的问题,还是作者说错了?两者真正的内核调度是如何的?希望高人指点。
相关文章推荐
- PHP 数组的遍历的几种方式(以及foreach与for/while+each效率的比较)
- for(;;)与while(1)循环的比较
- 对python中for、if、while的区别与比较方法
- shell编程中while与for的区别及效率比较
- for、while、foreach性能比较-PHP篇
- for,while,foreach遍历时间比较
- php的foreach,while,for的性能比较
- shell 与 awk if,for,while 比较
- for、while、foreach性能比较-PHP篇
- [Shell] if、for、while流程语句以及整数字符串判断比较的实例详解
- foreach、while、for性能比较
- 深入for,while,foreach遍历时间比较的详解
- 编写函数求两个整数 a 和 b 之间的较大值。要求不能使用if, while, switch, for, ?: 以及任何的比较语句
- [C++] for(;;) 和 while(true) 效率比较
- 【C语言】C语言中for、while和do while 比较
- for、while、foreach性能比较
- PHP中For、While、Foreach循环的比较
- for 与while 的比较
- for、while、foreach性能比较
- [Shell] if、for、while流程语句以及整数字符串判断比较的实例详解