I created a console application in C # and ran it on Windows / .NET 5 times faster than on linux / mono or windows / mono. The application encodes some binary files into text format (JSON).
I have profiled the application 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 blocks of total execution time?
EDIT: Here is the result of the "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
source
share