【问题标题】:Profiling MacRuby application using Instruments使用 Instruments 分析 MacRuby 应用程序
【发布时间】:2012-03-10 09:29:01
【问题描述】:

我想将应用程序移植到 MacRuby 以使其更容易作为应用程序分发,并且还能够使用本机 AppleScript (ScriptingBridge),而不是要求用户使用 XCode 来安装二进制 gem 等。我的应用程序依赖于 bibtex- ruby 和 citeproc-ruby,这两个 gem 在 MacRuby 上都非常慢。 bibtex-ruby 的基准测试要慢 100 倍,甚至需要 citeproc-ruby 需要 4-5 秒。我正在与这两个 gem 的作者合作以了解如何优化它们,他需要 ruby​​-prof 的输出。这不适用于 MacRuby,但建议使用 XCode 和 Instruments。我可以启动 Instruments,但是有很多选项,我不知道如何配置它,以便我可以获得有关哪些子例程大部分时间占用的有用信息。

如何使用 Instruments 分析带有 gems 的 MacRuby 应用程序? (或者也欢迎任何其他方法)

【问题讨论】:

    标签: xcode profiling gem instruments macruby


    【解决方案1】:

    按照here 的建议,另一种方法是使用 DTrace:

    打开两个终端窗口,在第一个类型中, $ your-benchmark-script.rb &, 记住 PID,然后在第二个窗口类型中, $ sudo dtrace -s path-to-macruby-source/sample-macruby/DTrace/methods_duration.d -p pid。 您可能需要在基准脚本的开头添加几秒钟的暂停,以便您有时间在第二个窗口中输入。

    (还有methods-count和objects-collected)。

    仍然没有完美地解决我最初的问题,但这增加了有用的信息。一个问题是无法比较 MRI 和 MacRuby 中的执行情况,因为您不能将 DTrace 与 MRI 一起使用(据我所知)。

    【讨论】:

      【解决方案2】:

      一些建议,没有经历过处理 gems 性能问题的需要:

      • 如果您可以隔离调用 gem 功能(或可疑的 gem 的特定功能)的点,您可以插入测量调用前后时间的老式跟踪,然后在运行几次后记录。

      • 如果您想使用 Instruments,您可以创建一个启动 gem 功能的样板 objc 类,这样您就可以在时间分析器的调用图中按名称而不是 macruby 方法地址来定位它们.

      在这两种情况下,详细了解开发人员需要什么类型和级别的配置文件信息可能会很有用,以便根据您的兼容性情况使用不同的工具重现相同性质的配置文件信息。

      【讨论】:

        猜你喜欢
        • 2011-03-19
        • 2012-04-02
        • 1970-01-01
        • 2011-02-16
        • 2016-07-31
        • 2012-08-20
        • 2017-04-20
        • 1970-01-01
        • 2011-06-08
        相关资源
        最近更新 更多