Быстрее ли создать UITableViewCell программно или загрузить его из пера?

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

15
задан Jay Bhalani 21 December 2015 в 07:31
поделиться