如何以编程方式启动/停止仪器(Time Profiler)?

时间:2013-06-25 07:59:37

标签: xcode macos profiling instruments xcode-instruments

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

1 个答案:

答案 0 :(得分:4)

是。寻找DTPerformanceSession。那是introduced with Instruments 4.0。那是enhanced in 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);