ios – iPhone中方法调用的CPU和内存使用情况

ios – iPhone中方法调用的CPU和内存使用情况,第1张

概述我正在尝试为我的iPhone应用程序的方法调用添加一些性能统计数据.我使用以下内容来查找处理时间: #define TICK NSDate *startTime = [NSDate date]#define TOCK NSLog(@"Time to process: %f", -[startTime timeIntervalSinceNow]) 是否有类似的策略来测量方法调用的CPU和内 我正在尝试为我的iPhone应用程序的方法调用添加一些性能统计数据.我使用以下内容来查找处理时间:

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

是否有类似的策略来测量方法调用的cpu和内存使用情况

解决方法 你将不得不做一些工作来使这个工作,但这是你如何做到这一点.

>从这个SO answer,您可以了解如何获得当前的cpu使用率.
>从这个SO answer,您可以了解如何获得当前的内存使用情况.

现在你可以产生一个新的线程,定期或按需检查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,但我相信其他答案已经很好地介绍了.

@H_403_55@ 总结

以上是内存溢出为你收集整理的ios – iPhone中方法调用的CPU和内存使用情况全部内容,希望文章能够帮你解决ios – iPhone中方法调用的CPU和内存使用情况所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1052633.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存