MoonLight

MIT
Objective-C、C++
iOS, macOS
Echoo_J · 2021年02月01日 · 6164 次阅读 · 2 条评论

什么是 MoonLight?

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

开源地址:https://github.com/AgoraIO-Community/MoonLight

设置图片宽度

MoonLight 的愿景

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

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

Requirements

  • iOS 8.0+
  • macOS 10.11+

Installation

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];

MoonLight 自测的结果

iOS/Mac MoonLight 自身的性能消耗非常低,几乎可以忽略不计;测试的过程中,性能输出稳定;App CPU、System CPU、App Memory、GPU 可以和 Instruments 或者活动监视器结果保持一致。

一、MoonLight VS Instruments

  • iOS

  • macOS

备注:MoonLight 对 CPU 有做归一化处理. CPU(MoonLight) = CPU(Instruments) / 核心数

二、MoonLight 自身的性能消耗

测试 case:

Step1: 打开 App,打开 MoonLight 的检测,测试性能 data1。

Step2: 打开 App, 不打开 MoonLight 的检测,测试性能 data2。性能消耗 = data1 - data2

  • iOS

App Memory 消耗 = 7.38-7.34 = 0.04Mb ;App CPU 消耗 =(2.1%-0.1%)/(6 核)= 0.33% ;GPU = 0% ,并且整个性能测试阶段,数据波动稳定,不会出现 MoonLight 的开启造成性能有不稳定变化。

测试设备:iPhone XS iOS 14.2 六核

  • macOS

App Memory 消耗 = 14.42-14.36 = 0.06Mb ;App CPU 消耗 =(0.08%-0.0%)/(4 核)= 0.02% ;GPU = 0% ,并且整个性能测试阶段,数据波动稳定,不会出现 MoonLight 的开启造成性能有不稳定变化。

测试设备:Macbook Pro 2017 13.3 Intel i5 , System: BigSur 11.0.1

————————————————————————————————————

写在最后

MoonLight 是我们从日常的开发中诞生的开源工具,我们希望它能帮助开发团队更快速更精确的定位性能问题,进而推动性能优化和提升;帮助测试团队更快更准的获取性能数据,提升测试效率。欢迎大家使用。
MoonLight 开源地址:https://github.com/AgoraIO-Community/MoonLight

评论列表
regg 发表于 2021年03月17日

会有详细教程吗,搞了半天没能弄成,要利用 xcode 部署那些,最开始建立项目选哪种就卡住了。。也做了不少别的尝试

simple 发表于 2021年02月01日

开源地址呢?