Компактность против производительности

Тут у меня дилемма возникла: какой МакБук Про лучше подходит для iOS разработки. Итак, в ассортименте:
— 13-дюймовые с Core i5 и 8ГБ RAM на борту.
— 15-дюймовые с Core i7 и 16ГБ RAM.

Невооруженным взглядом можно интуитивно догадаться, что второй вариант определенно производительней. Но при этом более громоздкий. Давайте разберемся стоит ли игра свеч и достаточно ли 13-дюймовых «прошек» для iOS разработки в наши дни.

Немного предыстории: у меня за всю мою деятельность iOS разрабом было две «прошки» и обе 13-дюймовые. Я люблю, когда ноутбук небольшого размера и веса. Удобно брать с собой практически везде. Первый из них уже отправился на покой, а второй живее всех живых. Он хоть и 2015 модельного года, но куплен только два года назад, поэтому довольно свеж и в хорошем состоянии.

Но, где-то с полгода тому назад, мне на работе выдали рабочую 15-дюймовую «прошку». И знаете, она мне прям очень понравилась. Но я хотел знать какой реально прирост производительности я получил вместе с ней. Ведь личные ощущения вроде «все стало быстрее» — крайне субъективны. А мы субъективным оценкам не верим. 🙂

Поэтому я решил взять оба ноутбука и сделать замеры времени компиляции/сборки/запуска тестов на одних и тех же проектах. Что у меня в итоге получилось? Давайте смотреть.

Начнем с исходных данных. У нас два ноутбука, с вот такими характеристиками:

И начнем замеры с какого-нибудь небольшого проекта. У меня как раз оказалось под рукой приложение на один экран и, приблизительно, десятью различными структурами данных (это немного). Для чистоты эксперимента, перед каждым замером я делал «Clean Build Folder». Посмотрим что у нас получилось по времени компиляции на каждом из ноутбуков.

13-дюймовый:

и 15-дюймовый:

Почти в два раза быстрее. Да, это не инкрементальная сборка, а «с нуля», но нам и важны не абсолютные цифры, а их соотношение.

Давайте возьмем проект побольше, и чтоб там юнит-тесты какие-нибудь были. Такой проект у меня тоже в закромах имеется. Сначала замеряем время компиляции.

13-дюймовый:

15-дюймовый:

Динамика сохраняется. Теперь запустим еще и тесты.

13-дюймовый, сборка:

выполнение тестов:

15-дюймовый, сборка:

тесты:

Видим очевидную закономерность. Но у меня припрятан еще один проект. Там очень много кодогенерации для тестов и самих тестов побольше, чем в предыдущем. Посмотрим что у нас там.

13-дюймовый, сборка:

тесты:

15-дюймовый, сборка:

и тесты:

Здесь видим интересный момент: время сборки стало одного порядка, при этом время самих тестов все еще отличается в два раза. Я перезапустил эти сборки еще раз и посмотрел логи. И основное время в обоих билдах как раз «съел» сам процесс кодогенерации, а потом компиляция этого сгенерированного кода. Что там такое генерируется? МОКи для юнит-тестов, конечно же. Там 23,5 тысячи строк сгенерированного кода. 🙂

И тут мне еще стало интересно: а какая загруженность системы по ресурсам во время вот такой вот длинной сборки? Я запустил Activity Monitor и начал наблюдать, периодически делая скриншоты на пиковых значениях.

Вот как выглядит загрузка оперативной памяти в 13-дюймовом:

А вот так в 15-дюймовом:

И тут есть один очень важный момент: в 15-дюймовом МакБуке значение «Memory Used» перевалило за 8ГБ. 13-дюймовая «прошка» просто физически не смогла бы выдать столько памяти в распоряжение.

А вот почему это важно: дело в том, что всё тестирование я проводил на только что перезагруженных ноутбуках, с выгруженными из памяти сторонними приложениями. Никаких скайпов, слаков, браузеров запущено не было. А ведь в обычном рабочем режиме эти все приложения у вас будут запущены, а значит на 13-дюймовом ноутбуке вы упретесь в потолок ресурсов. А вот в 15-дюймовом еще останется немного про запас.

После мониторинга памяти я решил еще помониторить и загрузку процессора. Вот самое высокое значение использования ресурсов на 13-дюймовом МакБуке:

Как видите, резерва совсем нет. Все загружено по максимуму. 😦

А вот пиковое для 15-дюймового:

Доступна еще почти половина ресурса.

Вот итоговый график по процессору 13-дюймового:

А вот для 15-дюймового:

Характеры графиков очень схожи: первая пиковая нагрузка приходится на момент генерации кода и компиляции сгенерированного, а вторая — на само выполнение юнит-тестов. Но у 15-дюймового МакБука остается еще неплохой резерв и для других приложений, которые могут быть запущены. А вот у 13-дюймовой «прошки» этого резерва совсем нет. 😦

Ну и в заключение, все таки, немного личных субъективных ощущений. Я думаю, что ошибался, считая 15-дюймовую «прошку» громоздкой. И по габаритам и по весу этот ноутбук имеет очень хорошие показатели. Когда я начал носить с собой «пятнашку» вместо «тринашки», я вообще не ощутил разницы в весе. Но тут нужно учесть, что я ношу рюкзак, а не сумку. Ну а размер — теперь это для меня скорее плюс, и вот почему: дело в том, что у 15-дюймового МакБука очень нифиговое такое разрешение экрана: 2880 x 1800 пикселей. Когда я пользовался 13-дюймовым, дополнительный монитор был моим неизменным спутником. А вот с 15-дюймовой «прошкой» во втором мониторе просто нет необходимости, ведь полезная площадь экрана самого ноутбука просто огромна. Еще не могу не упомянуть о батарее: в «пятнашках» она большей емкости. У меня после просмотра двух полнометражных фильмов остается еще от 20 до 35% заряда.