, IO ( ), , , . .
, . , a b, 20000 b , , 3 , ( , ). 160,008 .
, , , StringBuilder, , .
, , , Console.Write . ( b , , , - , Console.Write, #), , .
- . , , , "!" 20 000 , () , "!" 4000 . , , , .
, "!" Console.Write, , .
, cmd, :
( 100 )
724.5312500 - concat
53.2187500 - direct
30.3906250 - direct writing b x10
30.3750000 - direct writing b x100
30.3750000 - builder
30.3750000 - builder writing b x100
, :
205.0000000 - concat
9.7031250 - direct
1.0781250 - direct writing b x10
0.5000000 - builder
0.4843750 - direct writing b x100
0.4531250 - builder writing b x100
:
, cmd.exe. , ( CPU) .
, - , StringBuilder . , Console.Write , .
gcc C99 Win XP:
0.375 - direct ( fputs ( b, stdout ) 20000 times )
0.171 - direct unrolled ( fputs ( b x 100, stdout ) 200 times )
0.171 - copy to b to a buffer 20000 times then puts once
C IO, .net. .net / .