Профилирование MacRuby приложения с использованием инструментов - PullRequest
1 голос
/ 20 февраля 2012

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

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

Ответы [ 2 ]

1 голос
/ 02 марта 2012

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

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

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

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

0 голосов
/ 06 марта 2012

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

Откройте два окна терминала, в первом типе, $ your-benchmark-script.rb &, запомните PID,и затем во втором типе окна, $ sudo dtrace -s путь к macruby-источнику / образец-макруби / DTrace / Methods_duration.d -p pid.Вам может потребоваться добавить паузу в несколько секунд в начале сценария тестирования, чтобы у вас было время набрать во втором окне.

(есть также методы count-count и objects-собираемые).

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

...