CoreGraphics(Quartz)の性能を評価するのに時間計測をしたかったのだが、1/1000秒のオーダーで時間計測はどうすればいいかわからなかったので調べたら、NSTimeIvervalクラスを使えばよいことがわかった。
測定を開始するタイミングで
NSDate *startTime = [NSDate date];
経過時間を求めるタイミングで
NSTimeInterval elapsedTime = [startTime timeIntervalSinceNow]; NSString* str = [NSString stringWithFormat:@"Elapsed time: %f", -elapsedTime];
NSTimeInterval型はdouble型と同じで、こんなかんじに浮動小数点で時間が求められる。
んで実際の速度測定の結果なんだけど
Quartzで10ピクセルの直線をランダムで色を変えながら100本描写した時の計測結果

iPhone実機で0.1秒くらい。シミュレータだと0.01秒くらいだった。
全然違うっていうか、10倍。思ったよりiPhoneのCoreGraphicsの描写は速くないってのが感想。
以下その描写部分のソースコード
- (void)drawRect:(CGRect)rect {
NSDate *startTime = [NSDate date];
CGContextRef ctx = UIGraphicsGetCurrentContext();
CGContextSetLineWidth(ctx,10.0);
for(int i = 0; i< 100;i++){
float fRed = (float)(rand()%100) / 100;
float fGreen = (float)(rand()%100) / 100;
float fBlue = (float)(rand()%100) / 100;
float fAlfa = (float)(rand()%100) / 100;
CGContextSetRGBStrokeColor(ctx, fRed,fGreen,fBlue, fAlfa);
CGContextMoveToPoint(ctx,rand()%300,rand()%430);
CGContextAddLineToPoint(ctx,rand()%300,rand()%430);
CGContextStrokePath(ctx);
}
NSTimeInterval elapsedTime = [startTime timeIntervalSinceNow];
NSString* str = [NSString stringWithFormat:@"Elapsed time: %f", -elapsedTime];
UIFont *font = [UIFont systemFontOfSize:24];
[str drawAtPoint:CGPointMake(0,0) withFont:font];
}
tAkatronixおすすめのiPhone開発本
iPhone デベロッパーズ クックブック
posted with amazlet at 10.01.31
Erica Sadun
ソフトバンククリエイティブ
売り上げランキング: 84906
ソフトバンククリエイティブ
売り上げランキング: 84906
詳解 Objective-C 2.0
posted with amazlet at 10.01.31
荻原 剛志
ソフトバンククリエイティブ
売り上げランキング: 4163
ソフトバンククリエイティブ
売り上げランキング: 4163
iPhoneプログラミングUIKit詳解リファレンス
posted with amazlet at 10.01.31
所 友太
リックテレコム
売り上げランキング: 3089
リックテレコム
売り上げランキング: 3089
iPhone Core Audioプログラミング
posted with amazlet at 10.01.31
永野 哲久
ソフトバンククリエイティブ
売り上げランキング: 22615
ソフトバンククリエイティブ
売り上げランキング: 22615





FREEEK iPhone App 2.0 on iTunes App Store!!
[iPhone]インストールしている脱獄アプリ