衡量UITableView滚动性能-iphone

衡量UITableView滚动性能-iphone,iphone,objective-c,performance,uitableview,scroll,Iphone,Objective C,Performance,Uitableview,Scroll,在使用子视图和自己绘制视图之间,我试图测量UITableView的滚动性能。正如我们可能知道的,关于滚动性能,有几篇著名的文章(,它们在技术上帮助我们,并且都指向同一点:当我们有很多子视图时,我们应该使用drawRect 问题是,我不知道如何在任何情况下对性能进行基准测试:使用子视图或绘图。实际上,绘图比子视图更难,因此很难说服所有人直接使用绘图。我正在尝试编写两个小样本,使用两种技术,并对性能结果进行基准测试。我目前正在尝试w但这两种技术产生的结果相同: NSDate *date = [NSD

在使用子视图和自己绘制视图之间,我试图测量UITableView的滚动性能。正如我们可能知道的,关于滚动性能,有几篇著名的文章(,它们在技术上帮助我们,并且都指向同一点:当我们有很多子视图时,我们应该使用drawRect

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

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个文本。我建议使用仪器,而不是直接在代码中运行测试。核心动画工具将跟踪每秒的实际帧数(FPS)您的应用程序正在显示。

首先,我要确认,如果您有很多子视图,使用drawRect和Tweetie方法(例如)将获得巨大的性能优势我们有一个项目,每个手机都有14个子视图,在旧设备上运行起来就像糖浆一样。在直接运行之后,即使在旧的3G(而不是3GS)设备上,它也能以iphone4的速度运行

所以这是值得的


但是,从测量角度来看,您测量的是错误的点。您测量的是一个单元格的出列时间或一个新单元格的初始化时间,这两者都与在屏幕上渲染所需的时间无关。

此代码中最慢的一行是NSLog。当我尝试滚动时,我看到FPS运行在50-60左右,是越高越好吗?是的,速度越慢越高越好。它越低,看起来就越像幻灯片,你肯定不想看到。事实上,60是你能得到的最大值,如果接近这个值最好。