2012-02-19 6 views
1

Я хочу перенести приложение в MacRuby, чтобы было проще распространять его как приложение, а также иметь возможность использовать собственный AppleScript (ScriptingBridge), а не требовать от XCode установки бинарного драгоценного камня и т. Д. My приложение полагается на bibtex-ruby и citeproc-ruby, и оба этих драгоценных камня очень медленны на MacRuby. Тест в bibtex-ruby в 100 раз медленнее, и даже требующий citeproc-ruby занимает 4-5 с. Я работаю с автором этих двух драгоценных камней, чтобы узнать, как их оптимизировать, и он потребовал выход от ruby-prof. Это не работает с MacRuby, но вместо этого предлагается XCode и Instruments. Я могу запустить Инструменты, но есть множество вариантов, и я не знаю, как настроить его, чтобы я мог извлечь полезную информацию о том, какие подпрограммы занимают большую часть времени.Профилирование приложения MacRuby с использованием инструментов

Как использовать инструменты для профилирования приложения MacRuby с драгоценными камнями? (Или любые другие подходы приветствуются тоже)

ответ

1

Некоторые предложения, не пережив необходимость решения проблем с производительностью от драгоценных камней:

  • Если вы можете выделить точки, в которых драгоценный камень функциональность (или драгоценного камня определенные подозрительные функции), вы можете вставлять трассировки старой школы, которые измеряют время до и после вызова, а затем записывать их в журнал после нескольких прогонов.

  • Если вы хотите использовать Инструменты, вы можете создать класс шаблона objc, который инициирует функциональность gem, поэтому вы можете найти их в графике вызовов во время профайлера по имени, а не по адресам метода макроби.

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

0

Альтернативой является использование DTrace, как это было предложено here:

открыть два окна терминала, в первом типе, $ ваш-тест-script.rb &, помню PID, а затем во втором окне type, $ sudo dtrace -s path-to-macruby-source/sample-macruby/DTrace/methods_duration.d -p pid. Возможно, вам потребуется добавить несколько секунд паузы в начале тестового сценария, чтобы у вас было время ввести второе окно.

(есть также методы-счет и собранные объекты).

По-прежнему не удалось решить мою первоначальную проблему, но это добавило полезную информацию. Одна из проблем заключается в невозможности сравнения выполнения в MRI и MacRuby, поскольку вы не можете использовать DTrace с МРТ (насколько я знаю).