Как интерпретировать результаты монопрофилирования?

Я создал консольное приложение на C# и запускаю его в Windows/.NET в 5 раз быстрее, чем в Linux/Mono или Windows/Mono. Приложение кодирует некоторые двоичные файлы в текстовый формат (JSON).

Я профилировал приложение на linux/mono, используя:

mono --profile=default:stat myconsoleapp.exe

Вот первая часть результата:

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% моно? Моно-интерналы используют 3 четверти общего времени выполнения?

РЕДАКТИРОВАТЬ: вот результат "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

person Ovidiu Pacurar    schedule 28.04.2010    source источник


Ответы (1)


Правильный. Похоже, что символы вашего монобинарного файла удалены, поэтому вы не получаете более точной информации.

Я предполагаю, что большая часть этих накладных расходов приходится на десятичный код и (возможно) на сборщик мусора.

Для первого случая: какую моно версию вы используете? IIRC, недавно мы исправили некоторые проблемы с производительностью в этой области. Может быть хорошей идеей попробовать моно из транка svn.

Если накладные расходы исходят от GC, новый GC, который мы реализуем, должен помочь с этим.

Мы могли бы подтвердить любую проблему, если бы вы разместили исходный код или двоичный файл своей тестовой программы.

person lupus    schedule 29.04.2010
comment
Спасибо. Я добавил моно версию к вопросу. как я могу получить моно двоичный файл с включенными символами? - person Ovidiu Pacurar; 29.04.2010