Kyl*_*yle 6 iphone benchmarking cocoa-touch objective-c quartz-graphics
我在Objective-C中编写了一个iPhone应用程序,它在视图中使用了一些自定义绘图,我想对我的代码的各种修订进行基准测试,看看它真正有用.我正在计划这样做,通过设置一个新的应用程序,将我的自定义绘图代码添加到视图的drawRect:方法,然后,在视图控制器的for循环中,发送[UIView setNeedsDisplay]大量的次数并计算需要多长时间去完成.然而,setNeedsDisplay调用似乎是缓存的,所以即使我在for循环中调用它1000次,该drawRect:方法只被调用一次.此外,我尝试直接调用drawRect:但我需要一个图形上下文来做一些绘图,当我不使用setNeedsDisplay:UIGraphicsGetCurrentContext()时没有给我一个上下文.
有什么建议?
谢谢,
凯尔
您可以通过执行以下操作来为视图建立基准:
- (NSTimeInterval)timeTakenToDrawView:(UIView *)view count:(NSInteger)count
{
    CGRect bounds = [view bounds];
    NSDate *startDate = [NSDate date];
    UIGraphicsBeginImageContext(bounds.size);
    CGContextRef context = UIGraphicsGetCurrentContext();
    NSInteger i = 0;
    for (i = 0; i < count; i++) {
        CGContextSaveGState(context);
        [view drawRect:bounds];
        CGContextRestoreGState(context);
    }
    UIGraphicsEndImageContext();
    return [[NSDate date] timeIntervalSinceDate:startDate];
}
(没试过,但它应该工作)
| 归档时间: | 
 | 
| 查看次数: | 2979 次 | 
| 最近记录: |