使用Instruments Time Profiler时如何细分函数

我有一个相对较长的功能,在仪器时间分析器中占主导地位。有没有办法在此函数中添加其他符号,以便采样将显示分配给函数不同部分的时间?我正在寻找像(1)年前教授存在的MARK宏。     
已邀请:
使用宏:
#define MARK(K) asm("M."#K":");
对我来说一直很好。这实际上只是我在原始问题中提到的旧MARK宏的简化。放置MARK(LOOP1);函数中的某个位置将添加一个新符号M.LOOP1,它将显示在鲨鱼或乐器显示的函数列表中。     
我最近发现,在仪器的时间分析器中,如果你双击某个方法,它会显示你的源代码,其中包含每行所花费的时间百分比。 http://douglasheriot.com/blog/2011/04/xcode-4-instruments-awesomeness/ 我发现它非常有用,但我不确定这是不是你要求的。     
我被告知鲨鱼可以做到这一点,所以乐器也应该,但你必须告诉它该怎么做: 在函数调用堆栈(不仅仅是程序计数器PC)的挂钟时间(不仅仅是CPU时间)上进行采样。 告诉你出现在很大比例的堆栈样本上的代码行(不仅仅是函数)。 堆栈示例包括PC和每个通往PC所在位置的调用指令。 堆栈上的每条指令都共同负责花费的时间。 因此,任何负责X%时间的代码行都将在X%的时间内处于堆栈中。如果它足够值得值得关注,你会在样品上看到它。您可能会获得大量样本,但实际上并不需要太多样本。这是因为找到问题比定位更精确更重要。 如果您的最大问题在修复后会节省5%,那么它将出现在大约5%或更多样本上。如果它小于那个,那么你的代码就非常优秀了。它可能比它大很多,所以你不会有任何麻烦,看看它究竟在哪里。 补充:作为壁挂时间堆栈采样并逐行显示的分析器示例是Zoom,因此我建议您观看该视频。然后,尝试让仪器做同样的事情。     
更新: 我更新了代码并创建了一个单独的项目: https://github.com/nielsbot/Profiler 我有一些代码可以在这里执行此操作:我有一些代码可以在这里执行此操作:https://gist.github.com/952456 HTH 您可以使用以下代码分析函数的各个部分,如下所示:
-(void)myMethod
{
    ProfilerEnter( __PRETTY_FUNCTION__ );

    // ... code ...
    {
        ProfilerEnter("operation x");

        // your code here
        // ...

        ProfilerExit("operation x");
    }

    ProfilerExit(__PRETTY_FUNCTION__);
}
    

要回复问题请先登录注册