Можно ли сократить время запуска сценариев MacRuby, использующих ScriptingBridge?

Я хотел бы использовать MacRuby со ScriptingBridge вместо AppleScript для управления приложениями Mac, которые поддерживают AppleScript. Раньше я делал это с помощью appscript, который фактически устарел, поэтому переместил мост MacRuby и сценариев .

Единственная проблема заключается в том, что фреймворк ScriptingBridge загружается примерно за секунду, даже на быстрой машине с быстрым SSD. Например, этот простой скрипт выполняется примерно за 0,9 секунды, при этом почти все время уходит на загрузку фреймворка ScriptingBridge:

#!/usr/bin/env macruby

framework "ScriptingBridge"

textedit = SBApplication.applicationWithBundleIdentifier("com.apple.TextEdit")
textedit.activate

Эквивалентный osascript запускается примерно 70 миллисекунд, и py-appscript раньше давал такое же время:

osascript -e 'tell application "TextEdit" to activate'

Есть ли простой способ связать/скомпилировать/сжать сценарий MacRuby/ScriptingBridge во что-то, что запускается быстрее?

Я попытался использовать macrubyc для объединения скрипта в автономный исполняемый файл, но полученный исполняемый файл не работает намного быстрее, чем скрипт при обычном запуске, и все еще занимает около секунды для запуска.

(Моя догадка — нет, так как этап компиляции, такой как macrubyc, не может легко увидеть, к каким частям фреймворка будет обращаться скрипт, что затрудняет оптимизацию.)


person mattbh    schedule 12.01.2012    source источник
comment
Для всех, кто интересуется, я обнаружил, что системный Ruby (/usr/bin/ruby) загружает фреймворк ScriptingBridge гораздо быстрее (~200 мс, а не ~900 мс), поэтому я использую его вместо этого. Однако я оставлю вопрос открытым, поскольку мой обходной путь не затрагивает исходный вопрос.   -  person mattbh    schedule 30.01.2012