...

суббота, 20 января 2018 г.

Ну почему все стало так медленно?! Выбираем железо для разработки на Unity

Привет! Я делаю игры и ассеты на Unity. Начинающие разработчики иногда спрашивают меня, с чего начать и насколько мощный компьютер им понадобится. Лично у меня железо довольно старое. И чтобы ускорить разработку, я решил наконец-таки провести апгрейд своего компьютера. С далекого 2011 года сердцем моего ПК является процессор Intel Core i5 2500K, но настала пора отправить его на пенсию. Но что лучше — высокая тактовая частота или наличие большого количества ядер? Обязательно ли покупать дорогой процессор, или получится сэкономить? Какая видеокарта нужна для разработки? Будем разбираться под катом!


«Короче, что лучше?»


Самые нетерпеливые сразу могут промотать в конец)

Когда тупит Unity?


Существует несколько операций, выполнение которых занимает много времени при работе с Unity. Обычно в таких случаях я иду чаевничать или играю с котом. Иногда даже удается пройти пару уроков в Duolingo.

  1. Обработка файлов проекта. Unity считает хэши всех файлов в проекте, создает мета-файлы и строит свою библиотеку (папка Library). Особенно долго Unity обрабатывает звуковые файлы. Библиотеку никто не хранит в системе контроля версий, поэтому если вы давно не синхронизировали проект, вас ждет пара минут ожидания. Кроме того, если изменить платформу, например с Android на iOS, этот процесс придется повторить.
  2. Запекание света (baking). Тут все зависит от сложности освещения. Я делаю мобильные игры, поэтому запекание практически не использую.
  3. Сборка проекта. Во многом зависит от выбранной платформы и самого проекта. WebGL может вообще собираться целую вечность (иногда реально состариться можно и еще борода отрастает). Я имею ввиду именно получение готовой игры, а не компиляцию исходного кода (которая происходит практически мгновенно).

Пару слов о моем 2500K


Intel Core i5 2500K вышел в 2011 году и относится к линейке Sandy Bridge (техпроцесс 32 нанометра). Частота 3,30 GHz (3,70 GHz с Turbo Boost), 4 ядра и 4 потока, кэш-память 6 Mb. Ничего особенного, если бы не адекватный ценник и приставка K. На хорошей mobo (у меня чипсет p67) гонится как черт (у всех Sandy Bridge под крышкой припой). У меня он 7 лет проработал на частоте 4.7 Ghz. На дворе 2018 год, а этот процессор до сих пор считается лучшим в бюджетном сегменте, на барахолке он стоит около 5000 рублей. В общем то, никаких особых неудобств при разработке я не испытываю, такого процессора вполне хватает. Почему не i7? Да потому что стоит он вдвое больше, а я денюжкой не сорю)

Видеокарта


Видеокарта непосредственно для разработки никакого значения не имеет. Она понадобится вам только для запуска и тестирования проектов. Если вы делаете игру для PC с «крутым графоном», стоит потратиться на хорошую видеокарту. Поскольку я делаю мобильные игры, у меня нет никакой нужды бежать в магазин за GTX 1080 (которую наверняка уже раскупили майнеры). Поэтому я решил оставить свою старушку GTX 460. Тем не менее, я проведу тест с двумя видеокартами.

Выбор процессора


С выходом Ryzen AMD вернулись на рынок процессоров. Поэтому выбор будет стоять между:
  • Intel Core i5
  • Intel Core i7
  • Ryzen 5
  • Ryzen 7
  • Многоядерные серверные процессоры Xeon прошлых поколений (ибо стоят недорого)

Все, что ниже i5, а также старые процессоры AMD я рассматривать не буду (несмотря на все шутки про инди-разработчиков и дошираки).

Последний Core i5 — логичная замена моего i5 2500K. За эти 7 лет Intel, не имея никакой конкуренции и следуя своей концепции «Тик-так-так», прокачала свои процессоры в среднем на 50%. Поэтому даже если после покупки нового процессора Unity будет тупить в полтора раза меньше, я буду доволен.

Core i7 — камень для бояр, стоит вдвое больше i5. Нужен ли Hyper Threading за такие деньги? Согласно различным бенчмаркам, Hyper Threading обеспечивает прирост производительности до 30%.

Ryzen 5 и Ryzen 7 — новые 6-ядерные и 8-ядерные процессоры. Ядер больше, чем у Intel, но частоты меньше.

Серверные процессоры Xeon серий 16ХХ и 26ХХ имеют от 6 до 10 ядер (E5 2680 V2). Списанные с китайских серверов, они продаются на AliExpress по цене 100-150$, поэтому рассмотреть их стоит. Особенно, если вы ограничены в бюджете. Из минусов — придется купить китайскую материнку за 100$ и мощный кулер. Из плюсов — дешевая серверная DDR3 (регистровая).

После выхода Ryzen Intel оперативно скорректировал свой бизнес-план и выпустил шестиядерные процессоры. Если вам нужен процессор для игр, то выбирать нужно однозначно Intel. В большинстве игровых тестов даже 4-ядерные процессоры Intel, например i7 7700K, оказываются лучше Ryzen. Кроме того, гонятся до 5 Ghz даже на воздушном охлаждении.

Но у меня другой случай — я делаю игры, а не играю в них. Станут ли мои coffee break вдвое короче при использовании 8 ядер?

Увы, у меня нет возможности купить все эти процессоры, чтобы провести эксперимент. Но под рукой есть i5 2500K и серверный Xeon E5 1660 с шестью ядрами (будем считать его «аналогом» Ryzen 5, т.к. по бенчмаркам они очень близки). Вполне достаточно, чтобы определить, что же лучше для разработки на Unity.

Итак, будем тестировать:

  • разогнанный i5 2500K (4С/4T) ~ 80$
  • немного разогнанный (на хуанане особо не разгонишь) E5 1660 (6C/12T) ~ 130$

Замечу, что на E5 1660 удалось поставить максимальный множитель 42/42/42/42/0/0. Это значит, что при загрузке более 4-х ядер частота будет снижаться до базового значения 3600 Mhz (хотя на брендовых платах его гонят до 4800). i5 2500K же может работать на максимальной частоте 4700 Mhz при любой нагрузке.

Для сравнения, результаты бенчмарка этих процессоров и более новых, рассматриваемых к покупке (все в разгоне):

Таким образом, выбирая новый процессор, можно использовать эти данные, чтобы оценить выигрыш в быстродействии.

Тестовый стенд


  • Свежеустановленный Windows 10 (не захламленный всяким мусором)
  • Самый дешевый китайский SSD
  • Видеокарты GT 210 и GTX 460
  • Проект Tap Tap Builder (мобильная игра для Android и iOS), суммарный размер ассетов около 500 Mb

Тестовая методика


Методикой это назвать можно с натяжкой. Берем секундомер и запускаем следующие операции:
  • загрузка Windows 10 (с момента включения блока до появления рабочего стола)
  • пересоздание удаленной папки Library (с момента открытия проекта до появления окна редактора)
  • сборка игры под Android (с момента нажатия кнопки Build до появления APK)
  • Параллельно будем смотреть на загрузку CPU в AIDA64.

Загрузка Windows 10


  • E5 1660 загружает систему за 21 секунду
  • i5 2500K загружает систему за 26 секунд

Поскольку загрузка ОС — это по большей части лишь копирование файлов с SSD в оперативную память, система загружается в обоих случаях очень быстро (чай завариться не успевает). Разницу в несколько секунд можно списать на время включения материнских плат (разные сокеты, разные BIOS).

Пересоздание удаленной папки Library


Удаленная папка это не та, которая далеко находится. Я ее просто удаляю, чтобы Unity выполнил повторный импорт проекта (функции Reimport не доверяемся).

Первым в бой идет i5 2500K:

Результат 5:43. Процессор практически все время трудится на максимальной частоте 4700 Mhz, однако на 100% не загружается.

Затем очередь E5 1660:

Результат 5:53. Процессор работает, не напрягаясь, а частота лишь изредка достигает максимума в 4200 Mhz. Средняя загрузка процессора около 12%.

О чем говорят эти результаты? 5 минут в обоих случаях это довольно долго. i5 2500K не сбрасывает максимальную частоту, но при этом не загружен на 100%. E5 1660 старается использовать все ядра, и поэтому снижает частоту до 3600 Mhz (но при этом средняя загрузка очень низкая).

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

Сборка проекта под Android


Снова начинает i5 2500K:

Результат 2:50. Работает на максимальной частоте, а загрузка ядер временами достигает 100%. Будь их больше, результат бы улучшился.

Затем E5 1600:

Результат 2:50, абсолютно такой же! Частота все та же — 3600 Mhz, но загрузка ядер ни разу не достигает 100%. Хотя нагрузка определенно выше, чем при импорте проекта.

Выводы можно сделать абсолютно такие же, как в предыдущем тесте. Кроме того, i5 уперся в свой потолок.

Поменяем видеокарту


До сих пор работала GTX 460. В этом тесте я заменю ее на GT 210. Кто не знает, это самое днище среди видеокарт. Хуже ее может быть только ее отсутствие.

Импорт проекта для E5 1660:

Результат 5:38. Как и ожидалось, скорость операции не изменилась (разницу спишем на погрешность и сторонние факторы, например, работу Windows).

Оперативная память


У меня 12 Gb RAM, и ее использование при работе с Unity не превышает 50%. Таким образом, для разработки на Unity хватит и 8 Gb RAM. И параллельно еще сможете запустить фотошоп и ютуб.

Выводы


1. Для комфортной разработки нужна и высокая тактовая частота процессора, и большое количество потоков. 4-х потоков у процессоров Intel i5 явно недостаточно. Исходя из бюджета, можно рассмотреть 4-х ядерный i7 7700K, который очень любят геймеры или 6-ядерный i5 8600K, оба стоят в районе 250-300$. Если есть деньги, то можно взять и 6-ядерный i7 8700K, который стоит под 400$. Ryzen 5 1600X и Ryzen 7 1800X могут быть адекватной альтернативой за меньшие деньги, хотя и будут проигрывать Intel в максимальной частоте — 4 Ghz против 5 Ghz у Intel (в разгоне, конечно же). Использовать устаревшие платформы Sandy Bridge+, будь то i5, i7 или серверные Xeon 16XX и 26ХХ, имеет смысл только при ограниченном бюджете.

2. Вам не обязательно нужна самая крутая видеокарта. Особенно, если вы делаете мобильные игры. Так что оставьте топовые видеокарты майнерам. Я для замены своей GTX 460 выбрал GTX 1050 за 130$, чтобы Dark Souls 2 пройти еще разок.

3. Кроме того, рекомендую использовать SSD, поскольку Unity активно работает с файлами. Если вы ограничены в бюджете, можно взять даже самый дешевый SSD на 8 или 16 Gb, чтобы хранить на нем сам проект, а также установить туда Unity и все необходимые SDK.

Let's block ads! (Why?)

Комментариев нет:

Отправить комментарий