Профилировщик времени показывает, что самая трудоемкая операция в моем приложении - загрузка 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 мс.