将结果输出到控制台是一种良好的习惯,让我们知道程序的运行情况。但是有些时候,为了调试或者编程者不小心,会在嵌套循环的内层循环中加入控制台输出语句。从知识和直觉上来讲,这种做法肯定会影响程序运行效率,但是到底影响到如何程度呢?为回答这个问题,我做了如下测试。
本测试使用C#, 主要是两个函数。这两个函数的主题都是一个100000次的循环,其一每次循环将数字转换为文本并输出到控制台,另外一个只是将数字转换为文本但不输出。代码如下:
using System;
using System.Collections.Generic;
using System.IO;
using System.Diagnostics;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Program.testOutputTime();
Program.testNoOutputTime();
}
public static void testOutputTime()
{
Stopwatch sw = new Stopwatch();
sw.Start();
for (int i = 0; i < 10; ++i)
{
for (int j = 0; j < 10000; ++j)
{
Console.WriteLine(i.ToString());
}
}
sw.Stop();
Console.WriteLine("Time with output: " + sw.Elapsed.Ticks.ToString());
}
public static void testNoOutputTime()
{
Stopwatch sw = new Stopwatch();
sw.Start();
for (int i = 0; i < 100; ++i)
{
for (int j = 0; j < 10000; ++j)
{
i.ToString();// Console.WriteLine(i.ToString());
}
}
sw.Stop();
Console.WriteLine("Time without output: " + sw.Elapsed.Ticks.ToString());
}
}
}
程序运行结果为:
9
9
9
9
9
Time with output: 59471697
Time without output: 1184240
Press any key to continue . . .
从结果可以看出,在大量连续输出信息到控制台的时候,程序效率受到了明显的影响。上面例子中,两函数运行之间之比达到了100:2. 因此,为了效率考虑,以后编程的时候应该杜绝这样的输出方式。不要让不必要的输出降低系统的运行速度。