Можно ли сократить время запуска скриптов MacRuby, которые используют ScriptingBridge? - PullRequest
1 голос
/ 12 января 2012

Я бы хотел использовать 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, сложно определить, какие части инфраструктуры будут доступны сценарию, что затруднит оптимизацию.)

...