Agora-MoonLight iOS/Mac 上的性能测试组件开源项目

我要开发同款
匿名用户2021年01月28日
57阅读
开发技术Object-c
所属分类Objective-C、测试工具、开发工具
授权协议MIT

作品详情

MoonLight是iOS/Mac上的性能测试组件,它可以单独集成在任何App中实现自动化性能数据的采集,你可以非常轻松的获取到AppCPU、SystemCPU、AppMemory、SystemGPU以及GPUInfo的数据。

MoonLight的愿景

MoonLight,它的中文意思名为月光。月光弥漫在地球之上是宁静且自然的,月光会给予地球上的人们以指引。而月光的寓意恰好和我们开发性能测试组件的出发点相契合。

我们希望iOS/Mac的性能测试也能像月光一样,轻松且自然。MoonLight有着更低的性能消耗,更容易的使用方式,更精准的性能数据。它将帮助开发团队更快速更精确的定位性能问题,进而推动性能优化和提升。帮助测试团队更快更准的获取性能数据,提升测试效率。

对比其他的性能测试工具Instruments

MoonLight采集到的性能数据是基本和Instruments保持一致的。具体的优劣对比如下:

Instruments无法实现性能自动化,无法将获取到的性能数据提取出来进行分析,最后提供出去的性能数据准确度不够,存在人为误差。MoonLight可以解决这个问题。

Instruments无法实现远程性能测试,自然也无法实现高并发的性能测试,通常来说需要一台设备连接USB线后测试,然后一台测试完再测试下一台。MoonLight可以一次性测试非常多台,也没有必须连接数据线的要求。

高版本的Instruments无法测试一些低端系统机器的性能,MoonLight可以完美支持。

对于macOS上的App,Instruments是不支持GPU的输出,MoonLight支持。进过测试,GPU的输出和macOS自带的活动管理器GPU输出保持一致。

Instruments优点是数据可视化,并且可以提供内存泄漏测试。MoonLight暂时不提供数据可视化,但是由于MoonLight是可编程的,当开发者拿到相关的性能数据后,可以自行实现数据上报或者可视化的处理。

GT

GT不支持macOS,MoonLight支持。

GT采集到的AppMemory数据和Instruments是不一致的。GT无法输出GPU、SystemCPU,但是MoonLight可以。

GT集成到App中,需要添加非常多的依赖库,取消掉Bitcode支持,自身也比较庞大,并且会增加App的包大小。MoonLight更轻量化,对于iOS仅仅只需要增加一个系统库,对于Mac不需要增加任何的系统库。

Perfdog

Perfdog无法支持macOS上的App的性能测试。

Perfdog并非是一个自动化的性能测试工具,优点是数据可视化。

Perfdog并非是一个开源的测试工具,之前在iOS14上出现过AppCPU不准的Bug,而我们也并不清楚其实现的原理和代码,未来依旧有可能在某些系统上出现性能项测试不准的情况。

系统要求iOS8.0+macOS10.11+安装CocoapodsiOS:

Warning!ForiOS,donotuseitonAppStorerelease.Recommenduseitondebugmode.

pod'MoonLight_iOS',:configurations=>['Debug']macOS:pod'MoonLight_macOS'Usage//Step1:createMoonLightinstanceandsetsamplinginterval._moonLight=[[MoonLightalloc]initWithDelegate:selftimeInterval:1];//Step2:starttimer.[_moonLightstartTimer];//Step3:throughthecallback,youcangetalltheperformancedataperinterval.-(void)captureOutputAppCPU:(float)appCPUsystemCPU:(float)systemCPUappMemory:(float)appMemorygpuUsage:(float)gpuUsagegpuInfo:(NSString*)gpuInfo{NSLog(@"appMemory:%f",appMemory);NSLog(@"appCPU:%f",appCPU);NSLog(@"gpuUsage:%f",gpuUsage);NSLog(@"systemCPU:%f",systemCPU);NSLog(@"gpuInfo:%@",gpuInfo);}//Step4:ifyouwanttostopcapturingtheperformancedata,use"stopTimer".[_moonLightstopTimer];
声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论