我在Objective-C的這些功能:爲什麼Objective-C sqrtf()函數比只返回值的函數更快?
-(void)emptyFunction
{
NSTimeInterval startTime = [[NSDate date] timeIntervalSinceReferenceDate];
float b;
for (int i=0; i<1000000; i++) {
b = [self returnNr:i];
}
NSTimeInterval endTime = [[NSDate date] timeIntervalSinceReferenceDate];
double elapsedTime = endTime - startTime;
NSLog(@"1. %f", elapsedTime);
}
-(float)returnNr:(float)number
{
return number;
}
和
-(void)sqrtFunction
{
NSTimeInterval startTime = [[NSDate date] timeIntervalSinceReferenceDate];
float b;
for (int i=0; i<1000000; i++) {
b = sqrtf(i);
}
NSTimeInterval endTime = [[NSDate date] timeIntervalSinceReferenceDate];
double elapsedTime = endTime - startTime;
NSLog(@"2. %f", elapsedTime);
}
當我打電話給他們,以任意順序,它打印在控制檯中的以下內容:
2014-01-13 12:23:00.458 RapidTest[443:70b] 1. 0.011970
2014-01-13 12:23:00.446 RapidTest[443:70b] 2. 0.006308
如何這是否發生?如何sqrtf()功能是兩倍快於一個函數,只是返回一個值?我知道sqrtf()適用於彙編語言等比特,但速度快於返回?這怎麼可能?
我想sqrt()函數是C級,更接近系統,它使用寄存器數據類型。 –
區別在於'emptyFunction'和'sqrtFunction'方法不是函數,'sqrt()'是像'AnoopVaidya'這樣的C級函數。方法是**不**功能有很大的區別。 – Popeye