MoonLight是iOS/Mac上的性能测试组件,它可以单独集成在任何App中实现自动化性能数据的采集,你可以非常轻松的获取到AppCPU、SystemCPU、AppMemory、SystemGPU以及GPUInfo的数据。
MoonLight的愿景MoonLight,它的中文意思名为月光。月光弥漫在地球之上是宁静且自然的,月光会给予地球上的人们以指引。而月光的寓意恰好和我们开发性能测试组件的出发点相契合。
我们希望iOS/Mac的性能测试也能像月光一样,轻松且自然。MoonLight有着更低的性能消耗,更容易的使用方式,更精准的性能数据。它将帮助开发团队更快速更精确的定位性能问题,进而推动性能优化和提升。帮助测试团队更快更准的获取性能数据,提升测试效率。
对比其他的性能测试工具InstrumentsMoonLight采集到的性能数据是基本和Instruments保持一致的。具体的优劣对比如下:
Instruments无法实现性能自动化,无法将获取到的性能数据提取出来进行分析,最后提供出去的性能数据准确度不够,存在人为误差。MoonLight可以解决这个问题。
Instruments无法实现远程性能测试,自然也无法实现高并发的性能测试,通常来说需要一台设备连接USB线后测试,然后一台测试完再测试下一台。MoonLight可以一次性测试非常多台,也没有必须连接数据线的要求。
高版本的Instruments无法测试一些低端系统机器的性能,MoonLight可以完美支持。
对于macOS上的App,Instruments是不支持GPU的输出,MoonLight支持。进过测试,GPU的输出和macOS自带的活动管理器GPU输出保持一致。
Instruments优点是数据可视化,并且可以提供内存泄漏测试。MoonLight暂时不提供数据可视化,但是由于MoonLight是可编程的,当开发者拿到相关的性能数据后,可以自行实现数据上报或者可视化的处理。
GTGT不支持macOS,MoonLight支持。
GT采集到的AppMemory数据和Instruments是不一致的。GT无法输出GPU、SystemCPU,但是MoonLight可以。
GT集成到App中,需要添加非常多的依赖库,取消掉Bitcode支持,自身也比较庞大,并且会增加App的包大小。MoonLight更轻量化,对于iOS仅仅只需要增加一个系统库,对于Mac不需要增加任何的系统库。
PerfdogPerfdog无法支持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];
评论