×

Agora-MoonLight iOS/Mac上的性能测试组件

消耗积分:2 | 格式:zip | 大小:1.19 MB | 2022-06-23

刘静

分享资料个

授权协议 MIT
开发语言 Objective-C
操作系统 OS X
软件类型 开源软件
所属分类 开发工具测试工具

软件简介

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

MoonLight的愿景

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

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

对比其他的性能测试工具

Instruments

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

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

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

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

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

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

GT

  1. GT不支持macOS,MoonLight支持。

  2. GT采集到的App Memory数据和Instruments是不一致的。GT 无法输出 GPU、System CPU, 但是MoonLight可以。

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

Perfdog

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

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

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

系统要求

  • iOS 8.0+
  • macOS 10.11+

安装

Cocoapods

  • iOS:

Warning! For iOS, do not use it on AppStore release. Recommend use it on debug mode.

pod 'MoonLight_iOS', :configurations => ['Debug']
  • macOS:
pod 'MoonLight_macOS'

Usage

// Step1: create MoonLight instance and set sampling interval.
	_moonLight = [[MoonLight alloc]initWithDelegate:self timeInterval:1];

// Step2: start timer.
	[_moonLight startTimer];


// Step3: through the callback, you can get all the performance data per interval.
- (void)captureOutputAppCPU:(float)appCPU systemCPU:(float)systemCPU appMemory:(float)appMemory gpuUsage:(float)gpuUsage gpuInfo:(NSString *)gpuInfo {
	NSLog(@"appMemory:%f", appMemory);
	NSLog(@"appCPU:%f", appCPU);
	NSLog(@"gpuUsage:%f", gpuUsage);
	NSLog(@"systemCPU:%f", systemCPU);
	NSLog(@"gpuInfo:%@", gpuInfo);
}

// Step4:if you want to stop capturing the performance data, use "stopTimer".
	[_moonLight stopTimer];
 

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !