Как профилировать Monotouch, чтобы увидеть количество батутов (по типу), создаваемых во время выполнения? - PullRequest
4 голосов
/ 11 ноября 2011

Есть довольно много сообщений, касающихся батутов типа 0, типа 1 и типа 2 и ошибки времени выполнения

"закончились батуты"

на устройствах iOS.

У меня есть хорошее понимание того, как увеличить количество разных типов батутов во время кросс-компиляции AOT, однако я опасаюсь произвольно увеличивать распределение всякий раз, когда мы сталкиваемся с потолком во время выполнения.

Недавно я добавил компонент, который получает несколько аргументов Func<>, и большинство потребителей этого компонента создают делегатов Func<> анонимно. Мое предположение состояло в том, что, хотя я мог ожидать, что каждый анонимный делегат приведет к созданию батута, поведение, которое я, похоже, наблюдаю, состоит в том, что вместо повторного использования этого батута он продолжает создавать тип 0 (ntrampoline [метод батуты?] Каждый время выполнения анон делегата.

Что было бы чрезвычайно полезно, так это инструмент или вызов API, который позволил бы мне отслеживать, регистрировать или профилировать приложение во время выполнения для наблюдения за созданием батута.

Также приветствуются любые указания на побочные эффекты, связанные с раскрытием общего делегата или использованием анонимного делегата.

Спасибо за любые советы в правильном направлении.

С уважением, Кевин Феррон

1 Ответ

3 голосов
/ 12 ноября 2011

Лучше всего задавать такие (очень конкретные) вопросы списку рассылки mono-devel , то есть есть несколько вопросов (и предложений по профилированию), на которые здесь трудно ответить (даже если это может быть помечено правильно).

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

Вы также можете получить статистику из Mono, используя опцию - stats . Э.Г.

mono --stats myapp.exe

...
JIT statistics
Unwind info size                    : 198
Calls to trampolines                : 626
JIT trampolines                     : 416
Unbox trampolines                   : 1
Static rgctx trampolines            : 1
...

Однако это не поможет вам в контексте MonoTouch, где используется AOT (многие вещи различаются) и где вы не контролируете выполнение приложения.

...