Профилировщик времени показывает, что самая трудоемкая операция в моем приложении - загрузка UITableViewCells
из файлов пера. Самый затратный из них - загрузка UITableViewCell
с изображением размером 4 КБ.
Я загружаю UITableViewCell
из пера с помощью следующего кода:
[[NSBundle mainBundle] loadNibNamed:@"UITableViewCellPortrait" owner:self options:NULL];
cell = portraitCell;
self.portraitCell = nil;
Кто-нибудь сравнивал разницу между созданием представления программным способом или загрузкой UITableViewCell
из пера?
РЕДАКТИРОВАТЬ:
Я сравнил временной профиль повторных запусков загрузки UITableViewCell
из пера и программного создания представления. Мой тест включал чередование двух UITableViews
примерно 10 раз в течение 3-5 секунд. В каждом тесте программная загрузка UITableViewCell
была значительно быстрее, в 2-6 раз быстрее.
Может ли кто-нибудь подтвердить эти результаты?
РЕДАКТИРОВАТЬ: Я обновил код загрузки пера, чтобы загрузить файл пера только один раз и использовать кешированную версию для последующих вызовов.
if (self.UITableViewPortaitNib == nil) {
self.UITableViewPortaitNib = [UINib nibWithNibName:@"UITableViewCellPortrait" bundle:[NSBundle mainBundle]];
}
self.UITableViewPortaitNib instantiateWithOwner:self options:NULL];
cell = portraitCell;
self.portraitCell = nil;
Я также использовал инструмент автоматизации для создания более согласованных прогонов, и результаты по-прежнему показывают, что загрузка UITableViewCells
программно быстрее, чем загрузка UITableViewCells
для пера.Среднее время выполнения загрузки UITableViewCells
из пера составляло около 90 мс, в то время как среднее время выполнения для программного создания UITableViewCell
составляло 50 мс.