Профилировщик времени показывает, что в моем приложении самая трудоемкая операция - загрузка UITableViewCells
из nib-файлов. Самый дорогой из них включает загрузку UITableViewCell
изображения размером 4 КБ.
Я загружаю UITableViewCell
из пера со следующим кодом:
[[NSBundle mainBundle] loadNibNamed:@"UITableViewCellPortrait" owner:self options:NULL];
cell = portraitCell;
self.portraitCell = nil;
Кто-нибудь сравнивал разницу между созданием представления программным способом или загрузкой UITableViewCell
из пера?
EDIT:
Я сравнил временной профиль повторных запусков загрузки UITableViewCell
из кончика и создания представления программно. Мой тест включал чередование двух UITableViews
около 10 раз в течение 3-5 секунд. В каждом тесте загрузка UITableViewCell
программно была существенно быстрее, в 2-6 раз быстрее.
Может ли кто-нибудь подтвердить эти результаты?
EDIT:
Я обновил код загрузки пера, чтобы загружать файл пера только один раз и использовать кэшированную версию для последующих вызовов.
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 мс.