哪个更好,多次使用console.writeline()或将输出保存在stringbuilder上并调用console.writeline一次?

时间:2009-04-23 23:25:00

标签: c#

哪一个更快?哪一个使用更少的内存?

Console.WriteLine("string1")
Console.WriteLine("string2")
Console.WriteLine("string3")
Console.WriteLine("stringNth")

StringBuilder output = new StringBuilder();
output.AppendLine("string1");
output.AppendLine("string2");
output.AppendLine("string3");
output.AppendLine("stringNth");
Console.WriteLine(output);

感谢,

3 个答案:

答案 0 :(得分:8)

第一个。

控制台类将把它缓冲到标准输出流。

使用第二个选项,您正在尝试创建自己的缓冲区,然后再次缓冲它。

把它带到一个极端 - 做这10,000,000次。你的StringBuilder最终会占用你所有的内存,而控制台只会吐出输出。

答案 1 :(得分:0)

找出最好的方法是每次迭代10,000次,看看哪个更快。我怀疑它们在性能方面几乎完全相同。

答案 2 :(得分:0)

由于这是一个有7年历史的问题,这里的答案需要更清晰一点,并添加我的答案。

Console.WriteLine会慢一些。但它会消耗更少的内存。 第二个会占用更多内存,但速度要快得多。

一些统计数据: 使用Console.Writeline写入100,000大约需要30秒。 使用“字符串”构建器只需不到一秒钟。

如果字符串很小,那么内存不会成为问题,使用第二种方法会更好。