测量UITableView滚动性能 - iphone

vod*_*ang 11 iphone performance scroll objective-c uitableview

我正在尝试测量我的UITableView的滚动性能,在使用子视图和自己绘制视图之间.正如我们可能知道的滚动性能,有一些着名的文章(Tweetie,TableViewSuite,GlassyGlassy2,它们帮助我们掌握了这项技术,所有这些都将指向同一点:当我们有很多子视图时,我们应该使用drawRect .

问题是我不知道如何在两种情况下对性能进行基准测试:使用子视图或绘图.绘图实际上比subview更难,所以很难说服每个人直接绘图.我正在尝试编写2个小样本并使用2种技术并对性能结果进行基准测试.我目前正在尝试这个,但它为这两种技术生成相同的结果:

NSDate *date = [NSDate date];
    static NSString *CellIdentifier = @"CellIdentifier";

    CustomDrawingTableViewCell *cell = (CustomDrawingTableViewCell *) [self.tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
         cell = [[[CustomDrawingTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault 
                                                                             reuseIdentifier:CellIdentifier] autorelease];
    }

    // Configure the cell...
    // Main Code is HERE


    NSDate *date2 = [NSDate date];
    NSLog(@"%f", [date2 timeIntervalSinceDate:date]);
    return cell;
Run Code Online (Sandbox Code Playgroud)

我的手机有4张图片,1张文字

Noa*_*oon 13

我建议使用Instruments而不是直接在代码中运行测试.核心动画工具将跟踪应用程序显示的实际每秒帧数(FPS).


Rog*_*ger 5

首先,我将确认如果你有很多子视图,你将使用drawRect和Tweetie方法获得巨大的性能优势(例如).我们有一个项目,每个单元格都有14个子视图,在旧设备上就像糖蜜一样.已经开始直接进行,它甚至在旧的3G(而不是3GS)设备上以iphone4速度运行.

所以这是值得的.

虽然测量明智,但你在错误的点上进行测量.您正在测量出列单元格或初始化单元格的时间,这两者都与在屏幕上渲染所花费的时间无关.