Вступление
Если вы используете Android Studio в работе, то высока вероятность, что рано или поздно зададитесь вопросом – что можно «проапгрейдить» в железе для повышения производительности и что от этого ожидать? Если посмотреть официальные рекомендации (https://developer.android.com/studio/install), то они довольно скудные и особой ясности не вносят. На хабре на эту тему уже была довольно интересная статья с подробными разборами «что-на-что» влияет - https://habr.com/ru/companies/cian/articles/715640/. Здесь же я попытаюсь немного дополнить ее еще некоторыми тестами.
Мотивация
Все началось с того, что, постепенно обновляя компьютер, я получал все большую и большую производительность, пока в один «прекрасный момент» это не перестало работать. А, именно, при переходе с 14600KF на 14700KF – прирост был, но не такой значительный.
Что и как замеряю
Несколько лет назад на github был интересный проект по сбору статистки производительности различных систем при build-е проекта в Андроид студии - https://github.com/yozhik/AndroidStudioBenchmark. К сожалению, автор уже несколько лет не обновляет статистику. Свои замеры я буду делать на этом проекте - https://github.com/tremp-m/AndroidStudioBenchmark (сделал форк от исходного, чтобы была возможность продолжить сбор статистики (https://docs.google.com/spreadsheets/d/1j7-xO7awL4VOzGK6LvikJrlb84BfMwb9dUapZjg3Fnc/edit?usp=drive_link ). Если будет желание, присылайте свои результаты.).
Да, в общем случае этот проект не может быть эталоном замеров (на производительность от количества ядер может влиять многомодульность проекта), но некий ориентир дать может (в моем случае результаты замера в этом проекте отлично экстраполировались на мой рабочий проект).
Замеры была возможность произвести на нескольких системах – я их внес в «свою» (продолжение таблицы исходного проекта) таблицу статистики. В статье опишу результаты только для процессоров 12400F, 14600KF и 14700KF – этого будет достаточно, чтобы понять тенденцию. Остальные результаты есть в таблице. Так же у меня была возможность произвести замеры как под Windows 10, так и под Hackintosh (что тоже оказалось интересным). Необходимый объем ОЗУ на данный момент для себя вывел эмпирическим путем – 32 Гб (16 Гб в 2024 году уже маловато).
Замеры на различных системах
Последние данные в исходной таблице указывают, что «холодная» сборка проекта на Apple Macbook Pro 2021 M1 Pro занимает 1:30, последующие 0:57 и 0:56. Они будут ориентиром.
Замеры для Intel i5-12400F 32Gb (2x16 2-channel DDR4 3200, SSD M.2 NVME KINGSTON SKC2500M8500G) Windows 10 показали результаты 2:22, 1:29 и 1:26. Ожидаемо результаты хуже, чем у Macbook Pro 2021 M1 Pro.
Почти на той же самой системе (другой диск - SSD M.2 NVME WD_BLACK SN770 500GB) с Hackintosh (MacOS 13.3.1) результаты – 2:16, 1:12, 1:09. Тут интересный момент, что «вторые» замеры заметно лучше по сравнению с системой под Windows 10 и уже близки к Macbook Pro 2021 (насчет «холодного» есть сомнения – возможно, закралась неточность – слишком уж большая разница с повторными, но переделать в настоящий момент нет возможности).
Следующие замеры делал для 14600KF (32Gb 2x16 2-channel DDR4 3200, SSD M.2 NVME WD_BLACK SN770 1TB) Hackintosh (MacOS 13.6.3) – 1:15, 0:42, 0:41 – значительно быстрее 12400F и даже быстрее Macbook Pro 2021 M1 Pro.
На следующем этапе, в системе (Hackintosh (MacOS 13.6.3)) была заменена ОЗУ на дорогую DDR4 - 32Gb 2x16 2-channel DDR4 4133(gear 2). Результаты немного улучшились (но учитывая разницу в цене целесообразность сомнительна) – 1:11, 0:41, 0:40. В Windows 10 Pro 22H2 с SSD M.2 NVME KINGSTON SKC2500M8500G результаты заметно хуже 1:35, 1:05, 1:05.
Теперь система с 14700KF и 32Gb 2x16 2-channel DDR5 7200. Под Windows 10 Pro 22H2 с SSD M.2 NVME KINGSTON SKC2500M8500G – 1:24, 1:03, 1:02. Под Hackintosh (MacOS 13.6.7) с SSD M.2 NVME WD_BLACK SN770 500GB – 0:56, 0:42, 0:36. Результаты по сравнению с 14600KF и DDR4 3200 – явно выше (если учитывать разницу в производительности на ядро по синтетическим тестам в 5%, то прирост тут не только за счет ядер, но и похоже, что за счет ОЗУ), но учитывая значительную разницу в стоимости комплектующих нужно задуматься – стоит ли оно того?
Дополнительные вопросы
Следующий вопрос, на который я хотел получить ответ: а сколько и каких ядер надо для максимальной производительности при прочих одинаковых комплектующих? Провел несколько замеров с отключением ядер в биосе в различной комбинации (результат в таблице статистики). В итоге вывод (опять же, для этого проекта. Если вы оптимизировали свой путем разбития на модули, то, вероятно, у вас может задействоваться большее количество ядер): достаточно 6 производительных ядер – далее скорость сборки не растет. Энергоэффективные ядра своим количеством не могут компенсировать низкую производительность на ядро.
Для полноты картины сравнил как влияет (и влияет ли?) SSD на производительность для этого сравнил замеры под Windows 10 Pro 22H2 для 14700KF c 32Gb 2x16 2-channel DDR5 7200 между SSD M.2 NVME KINGSTON SKC2500M8500G и SSD M.2 NVME WD_BLACK SN770 1TB. Результаты 1:24, 1:03 и 1:02 против 1:22, 1:00, 0:59 в пользу WD_BLACK – разница есть (стабильно повторяемая), но не значительная.
Так же сделал некоторые замеры для кодогенерации во Flutter проектах – получилось, что при увеличении количества ядер более 4-х прироста в скорости нет. То есть фактически на рекомендации никак не влияет.
Выводы
Наибольшее влияние на скорость сборки в 2024 году имеет CPU (если мы говорим про актуальные комплектующие). Причем лучше выбирать 6-ядерный с наибольшей производительностью на ядро. 4-х ядерники не актуальны(Android Studio способна нагрузить большее количество ядер). 8-ми можно, но не в ущерб производительности на ядро (либо вы знаете, что делаете, и вам эта информация не нужна).
ОЗУ влияет, но не так сильно, на сколько растет ее стоимость. От 3200 DDR4 уже не плохо, а далее как позволяет бюджет.
SSD тоже незначительно влияет – лучше брать максимально производительный в вашем бюджете.
А главным вопросом лично для меня осталось: почему же на том же самом железе такая большая разница в производительности в пользу Hackintosh?