Как ускорит загрузку контроллера?
Долгоиграющие задачи вообще не должны выпоняться в UI треде
Общепринятая практика - выносить их в фон, а потом возвращаться в главный поток dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
    /* долгая операция */

    dispatch_async(dispatch_get_main_queue(), ^{
        /* обновляем ui*/
    });
});
Вот тут немного подробней idev.by/ios/21112
Т.е. общий план такой:
1) в init/viewDidLoad - где то там запускаете операцию, которая долго выполняется в фоновом потоке
2) Опционально отображаете крутилку
3) Когда операция закончена, забираете данные и на основе их обновляете ui
4) Опционально останавливаем отображение крутилки
4) Profit
Как вариант Отложенная инициализация