내가 ARC에 내 응용 프로그램을 변환하려고하지만 내가 할 때 나는 모든 점 이상으로 반복 코드 블록이 내 그래프보기에서 5 :(왜 ARC가 내 앱을 너무 느리게 만드나요?
의 요인에 의해 속도가 느려집니다 :
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로 변환합니다. 같은 상황에서 동일한 코드를 실행하고 .05의 결과를 얻습니다. 초! 5의 배수로 속도가 느려졌습니다 ... 그래서 스냅 샷에서 내 오래된 프로젝트를 복원 했으므로 ARC는 더 이상 없었고 10 번 테스트를했고 일관되게 결과는 .01 초였습니다. 그런 다음 다시 변환했습니다. ARC에 지속적으로 0.05 초 남았습니다. Xcode는 왜 이런 일이 일어나는지에 대한 단서를 제공하지 않습니다 ... 그러나 나머지 코드도 느려지고 있습니다. 무슨 일이 벌어 질 수 있니?
특히 초보자 인 경우 ARC를 사용하면 안됩니다. –
이것은 순수한 C 일 뿐이므로 ARC가 여기에서 차이를 만들어서는 안됩니다. 따라서이 코드가 실제로 느리게 실행되면 매우 놀랍습니다. 더 나은 테스트를 위해 위 코드를 두 번 이상 (예 : 루프에서 1000 번) 실행해야 결과가 더 정확합니다. 또한 위에서 언급 한 모든 변수가 로컬이거나, 일부 ivars입니까? 그리고 엉뚱한 @ H2CO3은 ARC가 일을 더 쉽게하기위한 것이므로 초보자들에게는 적합합니다. – pheelicks
Wut? ARC는 초보자에게 적합합니다! 이것이 새로운 프로젝트의 기본이며 왜 분석기, 컴파일러 및 나머지 툴 체인이 ARC를 중심으로 최적화되었는지에 대한 이유입니다. – bbum