[ios]CPU 和内存使用情况的一种方法调用在 iphone 手机

标签: ios Objective-C
发布时间: 2017/3/21 23:00:35
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我试图将一些性能统计信息添加到我的 iPhone 应用程序的方法调用。我用下面找到时间来处理︰

#define TICK   NSDate *startTime = [NSDate date]
#define TOCK   NSLog(@"Time to process: %f", -[startTime timeIntervalSinceNow])

有没有类似的策略来衡量的方法调用的 CPU 和内存使用率?

解决方法 1:

你要做一些工作来得到这个工作,但在这里就告诉你该怎么做。

  • 从这等答案,你可以学习如何获取当前的 CPU 使用率。
  • 从这等答案你可以学习如何获取当前的内存使用情况。

现在你可以生成一个新的线程检查 CPU 和内存定期或需求上,然后创建一个类,就像这样︰

@interface ProfilerBlock
-(id) init;
-(void) end;
@end
  • Init方法应该初始化当前时间和注册ProfilerBlock实例来获取信息,从辅助线程对内存和 CPU 使用率。
  • End方法应计算时间和打印所需的信息或将其写入到文件或东西:)

现在创建ProfilerBlock类的 C 样式释放函数

static void __$_Profiler_Block_Release_Object_$__(ProfilerBlock **obj) // the long name is just to prevent duplicated symbol names //
{
    [(*obj) end];
    [(*obj) release];
    (*obj) = nil;
}

最后,您可以创建宏来使你的生活更容易︰

#define CONCAT2(x, y) x ## y
#define CONCAT(x, y) CONCAT2(x, y)
#define PROFILER_SCOPE_OBJECT __attribute__((cleanup(__$_Profiler_Block_Release_Object_$__)))
#define PROFILE_BLOCK ProfilerBlock *CONCAT(__profilerBlock_, __LINE__) PROFILER_SCOPE_OBJECT = [[ProfilerBlock alloc] init];

一旦你有了这一切,您可以分析此类方法︰

-(void) methodToProfile
{
    PROFILE_BLOCK
    // add some code to profile here //
    // the "end" function will get called automatically after the method is done, even if you return early, allowing you to process the profiled data //
}

我希望这可以帮助,对不起,如果我没有详细的讲述如何去野菊花内存和 CPU,但我相信这也涉及其他答案。

官方微信
官方QQ群
31647020