2012-02-19 32 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(据我所知)。