I created a console application in C# and running it on windows/.NET is 5x faster than on linux/mono or windows/mono. The app encodes some binary files into text format(JSON).
I profiled the app on linux/mono using:
mono --profile=default:stat myconsoleapp.exe
Here is the first part of the result:
prof counts: total/unmanaged: 32274/25062
23542 72.95 % mono
459 1.42 % System.Decimal:Divide (System.Decimal,System.Decimal)
457 1.42 % System.Decimal:Round (System.Decimal,int,System.MidpointRounding)
411 1.27 % /lib/libz.so.1
262 0.81 % /lib/tls/i686/cmov/libc.so.6(memmove
253 0.78 % System.Decimal:IsZero ()
247 0.77 % System.NumberFormatter:Init (string,double,int)
213 0.66 % System.NumberFormatter:AppendDigits (int,int)
72.95 % mono? Are mono internals using 3 quarters of the total execution time?
EDIT: Here is the result of "mono --version"
Mono JIT compiler version 2.4.2.3 (Debian 2.4.2.3+dfsg-2)
Copyright (C) 2002-2008 Novell, Inc and Contributors. www.mono-project.com
TLS: __thread
GC: Included Boehm (with typed GC)
SIGSEGV: altstack
Notifications: epoll
Architecture: x86
Disabled: none