加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ios – 如何运行我的性能测试十次以上?

发布时间:2020-12-15 01:59:58 所属栏目:百科 来源:网络整理
导读:默认情况下,Xcodes性能测试运行十次,我的结果是这10次测试的平均值。问题是平均结果每次运行时差异很大,所以我必须运行测试至少五次以获得收敛结果。这是乏味和耗时的;有没有办法配置XCode或单元测试本身运行十次以上? 解决方法 XCTestCase的类转储公开
默认情况下,Xcodes性能测试运行十次,我的结果是这10次测试的平均值。问题是平均结果每次运行时差异很大,所以我必须运行测试至少五次以获得收敛结果。这是乏味和耗时的;有没有办法配置XCode或单元测试本身运行十次以上?

enter image description here

解决方法

XCTestCase的类转储公开了此方法:

- (void)_recordValues:(id)arg1 forPerformanceMetricID:(id)arg2 name:(id)arg3 unitsOfMeasurement:(id)arg4 baselineName:(id)arg5 baselineAverage:(id)arg6 maxPercentRegression:(id)arg7 maxPercentRelativeStandardDeviation:(id)arg8 maxRegression:(id)arg9 maxStandardDeviation:(id)arg10 file:(id)arg11 line:(unsigned long long)arg12;

当该方法被旋转时,第一个参数(arg1)具有10个持续时间:

["0.003544568","0.003456569","0.003198263","0.003257955","0.003508724","0.003454298","0.003461192","0.00423787","0.003359195","0.003335757"]

我将这个列表的最后添加了4个新值(1.0,2.0,3.0,4.0),然后再传回原始的实现,但不幸的是,XCTestLog有一个不同的类,它有一个内部的完整性检查:

Assertion failure in +[XCTestLog _messageForTest:didMeasureValues:forPerformanceMetricID:name:unitsOfMeasurement:baselineName:baselineAverage:maxPercentRegression:maxPercentRelativeStandardDeviation:maxRegression:maxStandardDeviation:file:line:]
caught "NSInternalInconsistencyException","Performance Metrics must provide 10 measurements."

一旦XCTestLog方法也被覆盖,所以它不断言,可以添加额外的4个值,而不会有任何投诉。不幸的是,该视图仍然只显示10个结果。

但是它确实在微型视图中更新总时间标准偏差值。

开车之前

Before Swizzle

经过Swizzling并添加4个值

After Swizzle

为了查看超过10个结果,可能需要调整XCode运行时间来告诉表格来显示更多的项目。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读