On Tue, 2009-07-14 at 18:06 -0500, Jimmy Tang wrote: > I'm playing around with some of the language shootout game benchmarks > at http://shootout.alioth.debian.org, > and I noticed a striking performance issue; > > I'm testing on mono 2.4 build 6 / vista64 vs .NET 3.5 sp1. Test code: > > static void Main() { > var sequence = Console.In.ReadToEnd(); > Console.WriteLine(sequence.Length); > } > > test input is a 50MB file. > > results. > > $ time ./test.exe < ../fasta5M.in.txt > real 0m1.352s > user 0m0.015s > sys 0m0.000s > > $ time mono test.exe < ../fasta5M.in.txt > real 0m18.154s > user 0m0.015s > sys 0m0.000s > > I see the ReadToEnd() is implemented along the lines of > char[] buffer; > while(Read(buffer) > 0) > stringbuilder.append(buffer) > > Just as a rudimentarytest using a temp string instead of char[]: > string buffer; > while((buffer = ReadLine()) != null) > stringbuilder.Append(buffer)
That must be a Mono on windows issue. I tried this: ---------------- gonz...@laptop:/tmp$ ls -l output2 output3 -rw-r--r-- 1 gonzalo gonzalo 5132004 2009-07-14 20:06 output2 -rw-r--r-- 1 gonzalo gonzalo 5888896 2009-07-14 20:07 output3 gonz...@laptop:/tmp$ time -p mono rl.exe < output2 5132004 real 0.43 user 0.36 sys 0.05 gonz...@laptop:/tmp$ time -p mono rl.exe < output3 5888896 real 0.41 user 0.35 sys 0.08 --------------- output2 has ~800k lines with a number. output3 is almost the same but with everything in one single line. -Gonzalo _______________________________________________ Mono-devel-list mailing list Mono-devel-list@lists.ximian.com http://lists.ximian.com/mailman/listinfo/mono-devel-list