2012-02-19 53 views
1

我想將應用程序移植到MacRuby,以使其更容易作爲應用程序進行分發,並且還能夠使用本機AppleScript(ScriptingBridge),而不是要求用戶使用XCode來安裝二進制寶石等。 app依賴於bibtex-ruby和citeproc-ruby,並且這兩個寶石在MacRuby上都非常慢。 bibtex-ruby的基準測試速度要慢100倍,甚至需要citeproc-ruby需要4-5秒。我正在和這兩個寶石的作者一起研究如何優化它們,並且他需要ruby-prof的輸出。這不適用於MacRuby,但是建議使用XCode和Instruments。我能夠啓動樂器,但有很多選擇,我不知道如何配置它,以便我可以獲得有關哪些子程序大部分時間都需要的有用信息。使用儀器分析MacRuby應用程序

如何使用Instruments來分析帶有寶石的MacRuby應用程序? (或任何其他方式歡迎過)

回答

1

一些建議,未透過需要處理性能問題從寶石消失:

  • 如果你可以隔離點,其中創業板的功能(或創業板可疑的特定功能)被調用,您可以插入老調查的痕跡來測量調用前後的時間,然後在幾次運行後將它們記錄在日誌中。

  • 如果您想使用Instruments,可以創建一個可啓動gem功能的樣板objc類,以便您可以按名稱(而不是macruby方法地址)在時間分析器的調用圖中找到它們。

在這兩種情況下,它可能會詳細地瞭解什麼樣的以及檔案信息的開發需求,水平,以重現同一性質使用不同的工具分析信息因您的兼容性情況非常有用。

0

一個替代方案是使用DTrace,所建議的here

打開兩個終端窗口,在第一個類型, $您的基準測試-script.rb &, 記住PID,然後在第二窗口類型, $ sudo dtrace -s path-to-macruby-source/sample-macruby/DTrace/methods_duration.d -p pid。 您可能需要在基準腳本開始處添加幾秒鐘的暫停,因此您有時間鍵入第二個窗口。

(還有方法計數和對象收集)。

仍然沒有完全解決我最初的問題,但是這增加了有用的信息。一個問題是,無法比較MRI和MacRuby中的執行情況,因爲您不能將DTrace用於MRI(據我所知)。