测量UITableView滚动性能 - iphone

时间:2011-03-28 13:30:59

标签: iphone objective-c performance uitableview scroll

我正在尝试测量我的UITableView的滚动性能,在使用子视图和自己绘制视图之间。正如我们可能知道的滚动性能,有几篇着名的文章(TweetieTableViewSuiteGlassyGlassy2可以帮助我们掌握这项技术,所有文章都会指向同一点:当我们有很多子视图时,我们应该使用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;

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

2 个答案:

答案 0 :(得分:13)

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

答案 1 :(得分:5)

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

所以这是值得的。

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