如何以编程方式启动/停止仪器(时间分析器)?

Pau*_*l R 2 macos xcode profiling instruments xcode-instruments

有没有办法以编程方式启动/停止仪器分析?我只需要以可靠的方式分析我的 OS X 代码的特定部分,但我似乎无法找到任何有关 Instruments 的文档,这些文档可能会告诉我如何做到这一点。对于 CHUD/Shark,有一个编程 API 和一个命令行工具来支持这一点,但我在任何地方都看不到 Instruments 的等效项?FWIW 我发现 2009 年左右的一些旧论坛帖子哀叹该领域缺乏 Instruments 功能,但最近没有。

Ken*_*ses 5

是的。查找 DTPerformanceSession。它是在 Instruments 4.0引入的。它在 Instruments 4.1 中得到了增强

这些文档提供了以下示例代码:

CFStringRef process = CFStringCreateWithFormat(kCFAllocatorDefault, NULL, CFSTR("%d"), getpid());
CFErrorRef error = NULL;
DTPerformanceSessionRef session = DTPerformanceSessionCreate(NULL, process, NULL, &error);
DTPerformanceSessionAddInstrument(session, (CFStringRef)@DTPerformanceSession_TimeProfiler, NULL, NULL, &error);
CFMutableArrayRef instrumentIDs = CFArrayCreateMutable(kCFAllocatorDefault, 0, &kCFTypeArrayCallBacks);
CFArrayAppendValue(instrumentIDs, @DTPerformanceSession_TimeProfiler);
DTPerformanceSessionStart(session, instrumentIDs, &error);

// do something in your app

DTPerformanceSessionStop(session, instrumentIDs, &error);
DTPerformanceSessionSave(session, (CFStringRef)@"/tmp/myAppProfile", &error);
DTPerformanceSessionDispose(session, &error);
Run Code Online (Sandbox Code Playgroud)