gpt4 book ai didi

objective-c - 为什么第一次运行 "XCTestCase -measureBlock:"需要这么长时间?

转载 作者:太空狗 更新时间:2023-10-30 04:03:05 25 4
gpt4 key购买 nike

我正在使用 Xcode 7. iPhone 5s 模拟器 (iOS 9.0)。

我正在尝试使用 XCTestCase -measureBlock: 来测量在我的某些函数上花费的时间。这将 block 内的代码运行 10 次并报告结果每次运行花费的时间、平均值、STDEV 等。

事实证明,第一次运行的时间总是非常长,大约高出 400-500%。对于非常简单的方法,甚至测量 block 中什么都没有,情况也是如此。我的 - (void)setUp- (void)tearDown 中没有任何内容。

NSString -stringWithFormat: 的结果。查看图表第一条的尖峰。 enter image description here值:[0.000031、0.000005、0.000003、0.000003、0.000003、0.000003、0.000003、0.000003、0.000003、0.000003]

空白 block 的结果。类似的结果。 enter image description here值:[0.000007、0.000001、0.000000、0.000000、0.000000、0.000000、0.000000、0.000000、0.000000、0.000001]

这是一个错误还是什么?这是怎么回事?

最佳答案

这可能是一些缓存预热的产物。

例如,Objective-C 运行时为每个类维护一个选择器缓存。这意味着对每个方法的第一次调用比后面的调用要慢一些。

您可以将测量 block 的内容放在调用 measureBlock: 之前,以测试这是否正确。所以热身跑不会被测量,然后。

关于objective-c - 为什么第一次运行 "XCTestCase -measureBlock:"需要这么长时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32775136/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com