[Mono-list] Computer Language Shootout Benchmarks

Ben Maurer bmaurer at ximian.com
Sat May 14 16:42:06 EDT 2005


On Sat, 2005-05-14 at 15:42 -0400, Miguel de Icaza wrote:
> Hello,
> 
> > now using Mono 1.1.6
> > 
> > http://shootout.alioth.debian.org/great/benchmark.php?test=all〈=csharp&sort=fullcpu
> > 
> > We really welcome improvements/alternatives to the existing programs,
> > and contributions for the micro-benchmarks we haven't done yet.

Am wondering about how you guys measured memory size. For example, you
claim that for a Hello World, mono uses 7.2 MB of ram. However:

[benm at omega benm]$ cat zzz.cs
using System;
class X {
        static void Main ()
        {
                Console.ReadLine ();
        }
}
[benm at omega benm]$ mcs zzz.cs
[benm at omega benm]$ mono zzz.exe

<on another term>

[benm at omega benm]$ ps u -C mono
USER       PID %CPU %MEM   VSZ  RSS TTY      STAT START   TIME COMMAND
benm      6557  0.0  0.3 13572 3648 pts/12   S+   16:25   0:00 mono zzz.exe

That puts it nowhere near as much as your measurements. This is SVN
head. Maybe the IO-layer daemon is messing things up, and 1.1.7 will fix
things up.

One other comment about memory usage -- it would be interesting to look
at what the non-shared startup cost of each program is. A decent way to
approximate this is to do the following

<run one mono process>
pre=<record amount of free ram>
<run another 100 processes>
post=<record amount of free ram>

non_shared_mem_per_proc = (post - pre) / 100

Of course, this assumes that your machine has enough physical memory so
that nothing gets swapped out while you run the extra processes. A much
better way to measure this would be to insert code into the kernel that
tells the RSS per mapping, so that you can discount the RSS of shared
mappings. RML did a hack like this for me, but I don't quite trust it
yet.

I'd also like to see some benchmarks that focus on allocation behavior.
For example:

      * Do tons of allocations, and then free everything except for
        randomly scattered things. Then do 10 mb more of allocation and
        free them all (focuses on fragmentation -- moving gcs should be
        able to compact the heap)
      * Do enough allocations so that cache locality matters:
        http://blogs.msdn.com/ricom/archive/2005/01/05/347361.aspx is a
        really good benchmark, it'd be cool to have something like it.

-- Ben



More information about the Mono-list mailing list