我正在尝试将我的应用程序转换为 ARC,但是当我这样做时它会减慢 5 倍 :(
在我的图表视图中,我有这个迭代所有点的代码块:
NSLog(@"%f", CACurrentMediaTime());
for (NSUInteger xIndex = firstXValueOnScreen; xIndex <= lastXValueOnScreen; xIndex++)
{
float value = 5; //This used to call a function to get the value but I took out the function call to better demonstrate that this seems to be just a general slowdown...
if (extremesUninitialized)
{
yMax = value;
yMin = value;
extremesUninitialized = NO;
}
else
{
yMax = MAX(yMax, v,alue);
yMin = MIN(yMin, value);
}
}
NSLog(@"%f", CACurrentMediaTime());
在 ARC 之前,此块在大约 0.01 秒内执行。然后,我使用 ARC 转换器,它愉快地将我的代码转换为 ARC,没有任何抱怨。在此之后,我在相同的情况下运行相同的代码并得到 0.05 秒的结果!它减慢了 5 的倍数......所以我从快照中恢复了我的旧项目,所以没有更多的 ARC,并且进行了 10 次测试,并且始终得到 0.01 秒的结果。然后我将其转换回 ARC 并始终获得 0.05 秒。XCode 在这里没有给我任何关于为什么会发生这种情况的线索......但是我的其余代码也在变慢。会发生什么?