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