UIWebViewの初期化は結構遅いという話
当然といえば当然だけど、
初期化だけで思った以上に
時間かかっていたので記事にしてみた
こんなコードで、UIView、UIImageView、UIWebViewの三種類を
10回initした時の各処理の平均時間を出力
double starttime, endtime, totaltime;
NSArray *classArray = @[[UIView class], [UIImageView class], [UIWebView class]];
for (id obj in classArray) {
NSMutableArray *totalTimes = [NSMutableArray array];
int loopCnt = 10;
for (int i=0; i<loopCnt; i++) {
starttime= (UInt64)floor((CFAbsoluteTimeGetCurrent() + kCFAbsoluteTimeIntervalSince1970) * 1000.0);
id object = [[NSClassFromString(NSStringFromClass([obj class])) alloc] init];
endtime= (UInt64)floor((CFAbsoluteTimeGetCurrent() + kCFAbsoluteTimeIntervalSince1970) * 1000.0);
totaltime = endtime - starttime;
[totalTimes addObject:[NSNumber numberWithDouble:totaltime]];
object = nil;
}
NSLog(@"%@ avg = %@", [obj class],[totalTimes valueForKeyPath:@"@avg.self"]);
}
こんな結果になった
UIView avg = 0
UIImageView avg = 0
UIWebView avg = 212.6
UIViewとかUIImageViewの初期化は、
無視できるレベルの処理時間(1msecとか)だけど、
UIWebViewは200msec以上かかってた
あんまり意識した事なかったけど、
速度にシビアな状況だと結構気になるレベル
だということが分かった
ちなみに、環境は
MacBook Pro
CPU : Core i7 2.6GHz
MEM : 16GB
で、iphoneシミュレータ(iphone6)での結果です
追記
実機(iphone5s)でやったら全然早かった
平均30msecぐらい
これぐらいなら、よほどじゃない限り目を潰れるか
UIView avg = 0
UIImageView avg = 0.1
UIWebView avg = 31.2