Измерение производительности прокрутки UITableView - iphone

Я пытаюсь измерить производительность прокрутки для моего UITableView, между использованием subview и рисованием самого представления. Как мы можем знать о прокручиваемости, есть несколько известных статей (Tweetie, TableViewSuite, Glassy и Glassy2, которые помогают нам в технике, и все укажут на одну и ту же точку: когда у нас много подзаголовков, мы должны пойти с 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 текст

Ответ 1

Я бы предложил использовать инструменты, а не пытаться выполнить тест непосредственно в вашем коде. Инструмент Core Animation будет отслеживать фактическое количество кадров в секунду (FPS), отображаемое вашими приложениями.

Ответ 2

Во-первых, я подтвержу, что если у вас много подзаголовков, вы получите огромные преимущества в производительности, используя метод drawRect и Tweetie (например). У нас есть проект, в котором каждая ячейка имеет что-то вроде 14 под-представлений, и она запускалась как патока на старых устройствах. Перейдя к этому прямо, он работает на скорости iphone4 даже на старых устройствах 3G (не 3GS).

Так что это того стоит.

Измерение мудрое, хотя, вы измеряете в неправильной точке. Вы измеряете время, чтобы либо удалить ячейку, либо начать новую, ни одна из которых не имеет никакого отношения к времени, которое требуется для рендеринга на экране.