Ответ 1
Я бы предложил использовать инструменты, а не пытаться выполнить тест непосредственно в вашем коде. Инструмент Core Animation будет отслеживать фактическое количество кадров в секунду (FPS), отображаемое вашими приложениями.
Я пытаюсь измерить производительность прокрутки для моего 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 текст
Я бы предложил использовать инструменты, а не пытаться выполнить тест непосредственно в вашем коде. Инструмент Core Animation будет отслеживать фактическое количество кадров в секунду (FPS), отображаемое вашими приложениями.
Во-первых, я подтвержу, что если у вас много подзаголовков, вы получите огромные преимущества в производительности, используя метод drawRect и Tweetie (например). У нас есть проект, в котором каждая ячейка имеет что-то вроде 14 под-представлений, и она запускалась как патока на старых устройствах. Перейдя к этому прямо, он работает на скорости iphone4 даже на старых устройствах 3G (не 3GS).
Так что это того стоит.
Измерение мудрое, хотя, вы измеряете в неправильной точке. Вы измеряете время, чтобы либо удалить ячейку, либо начать новую, ни одна из которых не имеет никакого отношения к времени, которое требуется для рендеринга на экране.