【问题标题】:Xcode profiler: sigprocmask & __sigaltstack overheadXcode 分析器:sigprocmask 和 __sigaltstack 开销
【发布时间】:2021-09-10 01:40:06
【问题描述】:

我正在使用 Xcode 和 iPhone X 设备分析我的应用程序(使用 Codename One 构建)。我注意到,在繁重的计算(单线程或多线程)中,sigprocmask__sigaltstack(来自libsystem_kernel.dylib)是最大的时间消费者,各占 20% 以上。这是一个巨大的开销。有谁知道这是从哪里来的,是否有办法减少开销?

【问题讨论】:

    标签: xcode codenameone profiler overhead sigprocmask


    【解决方案1】:

    不是这些方面的专家,但据我所知,它们是低级内核调用。我认为这两个都是探查器开销,因此如果您在没有探查器的情况下运行,它们将不会成为列表的顶部。

    同样,不是专家,但这是有道理的。分析器需要定期查找有关当前方法和堆栈的信息。

    【讨论】:

    • 谢谢,是的,一定是这样。 (我可能应该检查 Call Tree > Hide system libraries。)起初我以为 profiling 和 running 之间的性能差异只有 10-20% 左右,但似乎我还必须将设备的热状态纳入帐户,使用 6 个线程运行 1-2 分钟。仔细测试(让设备在每次运行后冷却下来)我发现 'build for profiling; 之间的平均性能差异为 40%; profile' 和 'build for running;安装;跑步'。这几乎完全解释了分析时系统功能的 2x 20%。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-20
    相关资源
    最近更新 更多