[Mono-dev] ToString() performace in Mono

Paolo Molaro lupus at ximian.com
Fri Nov 23 08:01:38 EST 2007


On 11/22/07 pablosantosluac wrote:
> And the following results:
> 
> >compareCompare.exe
> val is 5999999 and time 3525
> 
> >"c:\Archivos de programa\Mono-1.2.5.2\bin\mono.exe" compareCompare.exe
> val is 5999999 and time 11577

Please provide also info on the cpu specs (which cpu and frequency).
On a 2.4 GHz core 2 duo I get:
val is 5999999 and time 4131

The profiler output is:
prof counts: total/unmanaged: 1033/333
    158 15.31 % NumberStore:.ctor (int)
     82  7.95 % System.Text.StringBuilder:Append (char)
     59  5.72 % System.NumberFormatter:FormatGeneral
(System.NumberFormatter/NumberStore,int,System.Globalization.NumberFormatInfo,bool,bool)
     43  4.17 % mono(GC_mark_from
     42  4.07 % NumberStore:AppendIntegerString (int,System.Text.StringBuilder)
     40  3.88 % (wrapper alloc) System.Object:Alloc (intptr,int)
     39  3.78 % /lib/i686/cmov/libc.so.6(memset
     34  3.29 % NumberStore:get_IntegerDigits ()
     33  3.20 % System.String:memcpy4 (byte*,byte*,int)
     32  3.10 % mono(mono_array_new_specific
     27  2.62 % System.String:memset (byte*,int,int)
     27  2.62 % System.Text.StringBuilder:.ctor (string,int,int,int)
     23  2.23 % System.NumberFormatter:FormatGeneral (System.NumberFormatter/NumberStore)
[...]

This shows what needs improvement.
It also shows you'll see better numbers on Linux as the string
allocation is more optimized there.
It may be worth doing something with the byte array in NumberStore:
ideally it should use the stringbuilder itself to store the
number's characters, but this means quite a few changes to the code.
The code should also likely be changed to the standard implementation of
using divides by 10: then we could optimize that division in the jit.

lupus

-- 
-----------------------------------------------------------------
lupus at debian.org                                     debian/rules
lupus at ximian.com                             Monkeys do it better



More information about the Mono-devel-list mailing list