0
How do you prevent flushing to the screen for Console.WriteLine()?
In visual studio (console application), this one runs extremely slow: for (int i = 0; i < 9999; i++) Console.WriteLine(i); I suppose that after each loop run the console gets flushed thus making it slow. How do I prevent this?
2 Respostas
+ 3
The standard doesn't specify that Console.WriteLine flushes the output
https://docs.microsoft.com/en-us/dotnet/api/system.console.writeline
This thread also suggests the same thing
https://stackoverflow.com/questions/16791167/console-writeline-c-sharp-loses-stdout-when-logging
So it's not the flushing that's causing your loop to run slow. Loops this big are slow by themselves. Why are you looping 9999 times anyways?
+ 3
Most of the time in this code is spent on the console window having to scroll the screen. It would run faster if you use Write and separate the numbers with spaces to fit more information in horizontally rather than vertically.
A small amount of extra time is spent in i/o overhead from so many calls to WriteLine. You could build a single string in the loop, and then make only one call to Write after the loop, though I'm not certain that this would be a significant speedup:
string s = "";
for (int i = 0; i < 9999; i++)
s += i.ToString() + '\n';
Console.Write(s);