我正在为iPad编写一个绘图应用程序,并且正在进行一些时间分析,因此我可以看到我的绘图可能加速的位置。
在我的绘图方法中,我有以下4行代码:
CGContextDrawImage([DrawingState sharedState].context, CGRectMake(0.0f, 0.0f, [DrawingState sharedState].screenWidth, [DrawingState sharedState].screenHeight), unzoomedBufferImage);
CGImageRef image = CGBitmapContextCreateImage([DrawingState sharedState].context);
CGContextDrawImage(context, CGRectMake(0.0f, 0.0f, 768, 1024), image);
CGImageRelease(image);
第一行占18.8%的时间,第二行,第三行和第四行仅占4.5%的时间,CGContextDrawImage行占3.5%。
为什么这两个CGContextDrawImage函数的性能差异很大(18.8%vs 3.5%)?
注意:[DrawingState sharedState] .screenWidth和[DrawingState sharedState] .screenHeight分别是768和1024,所以从理论上讲,我的绘图量相同。
答案 0 :(得分:6)
由于您正在使用抽样,这可能不完全准确地说明您在哪里花费时间..
我试试这段代码:
DrawingState * state = [ DrawingState sharedState ] ;
CGContextRef context = state.context ;
CGRect r = { .size = { state.screenWidth, state.screenHeight } } ;
CGContextDrawImage( context, r, unzoomedBufferImage);
CGImageRef image = CGBitmapContextCreateImage( context );
CGContextDrawImage(context, r, image);
CGImageRelease(image);
只是为了获得更多信息。
即。当事情没有意义时,尝试改变你对“你知道的真实”的假设
如果这没有显示任何信息,您可以尝试使用我的性能分析宏检测代码:https://gist.github.com/1905396:)