Эпизод 0. Hack vs Mac. Xcode build time


    Следующий эпизод Стоимость хака

    Эта статья начинает собой цикл из нескольких об использовании Hackintosh в повседневной работе и особенно с IDE Xcode 9 и будет больше интересна разработчикам под языки objc/swift. 
С другой стороны, мой первый хак был собран, когда я не был знаком с этими языками и может пригодиться даже тем, кто не является разработчиком, но по тем или иным причинам хочет попробовать Mac OS. 
В то время у меня был достаточно мощный рабочий ноутбук Sony и большое желание начать программировать под iOS. Но я не был готов потратить определенную сумму денег на Mac не зная пригодиться он мне в конечном итоге или нет.

    Поэтому было принято решение собрать Hackintosh, который в итоге позволил мне войти в мир разработки приложений под устройства компании Apple. В первой статье я хочу уделить внимание времени сборки проектов в среде Xcode. Разработчики прекрасно знают на сколько уменьшилась скорость и увеличилось время сборки проектов с выходом 9 версии этого IDE, особенно на языке swift или микса из objc/swift. Ускорить время компиляции можно, во-первых, настроив различные флаги и скрипты, во-вторых, с помощью рефакторинга непосредственно кодовой базы.

    Но в этом эпизоде будет уделено внимание третье составляющей инструментов разработки, а именно «железу».

    Так как информации по времени сборки проектов не так много или она достаточно узкая и затрагивает только один язык/проект и нет объективности, у меня появилась идея собрать статистику под разные компьютеры и провести некоторый анализ. Я уверен, что эта информация вам пригодится в следующий раз, когда вам менеджер проекта или техлид спросят: «Зачем тебе такое мощный компьютер, все и так прекрасно работает?!». Или если вы фриланс разработчик и однажды задумаетесь стоит ли потраченных денег этот Mac и сколько в итоге вы выиграете времени на постоянные билды в течении дня.

    У большинства есть понимание, что более дорогие компьютеры компании Apple обеспечивают более комфортное и самое главное быстрое выполнение поставленных работодателем задач. Но нет понимание о каких порядках идет речь.
Мной были найдены разработчики, которые в интересах всего ios-комьюнити провели ряд тестов на своих машинах и предоставили для вас результаты.


    В тестах была изучена производительность хакинтош c новым процессором i7-8700K поколения Coffee Lake и iMac Pro c флагманским 18 ядерным процессором Xeon W-2191B поколения Skylake. Мне всегда было интересно сравнить время компиляции на хаках и нативных машинах Apple. Учитывая большую стоимость iMac Pro, думаю, многим будет интересно узнать рекомендуется ли он к покупке и действительно ли это принесет значительный прирост в скорости разработки проектов.


    В конце вводной части хотелось бы поблагодарить Ash Furrow за репозиторий (его проект так же участвует в тесте) с уже собранными данными тестирования, который в том числе вдохновил меня на написание этой статьи.

    Используемые сокращения:

    Хак/hack – хакинтош/hackintosh
    SBS ­(Standard Build System) – «чистая» сборка на стандартной системе сборки
    SBS-ret – повторная сборка на SBS
    NBS (New Build System) – «чистая» сборка на новой системе сборки
    NBS-ret – повторная сборка на NBS

    
Перейдем непосредственно к тестированию.


    Тестирование


    В тестировании участвовали следующие устройства:

    • iMac Pro (18 core) Xeon W-2191B 2,3/4,3GHz / 64Gb
    • Hackintosh i7-8700K (6 core) 3,7/4,7GHz (HFS+) / 32Gb
    • iMac 4K mid 2017 i7-7700K (4 core) 4,2/4,5GHz / 16Gb
    • Macbook Pro 2017 i7-7820HQ (4 core) 2,9/3,9GHz (HFS+) / 16Gb

    Было принято решение использовать только open source проекты, чтобы после статьи у каждого разработчика была возможность добавить свои результаты и сравнить с топовым железом (пока только на Xcode 9.2). Большинство из этих проектов в настоящее время активно развиваются и, чтобы была возможность в дальнейшем с выходом нового железа производить «чистые» тесты и сравнить результаты, я подтянул проекты под свой аккаунт. Затем обновил на них фреймворки/библиотеки, проверил возможность просто скачать и без лишних действий (почти) начать тестирование. Инструкция по тестированию.

    Используемые проекты


    Всего использовалось 6 проектов (5 из них доступны в сторах):


    1. Eidolon – iOS / swift 3 / cocoapods

    2. Firefox – iOS / swift 3 / carthage — image

    3. Kickstarter — iOS / swift 3 / carthage — image

    4. Wikipedia — iOS / objc & swift / carthage — image

    5. Telegram — Mac OS / swift 4 — image

    6. Wire — iOS / objc / cocoapods & carthage — image

    Порядок проведения тестов


    1. Замеры производились в Xcode 9 при «чистой» сборке для SBS и NBS

    2. И после добавления одной строчки кода:

    print(«Hello, Ash Furrow») в application(: didFinishLaunchingWithOptions:) AppDelegate для swift
    NSLog(@«Hello, Ash Furrow»); — для objc

    Никакие дополнительные флаги не выставлялись, настройки проектов для ускорения времени сборки не производились.

    Кроме определения времени сборки проектов, замерялась скорость работы диска в AJA System Test Lite и количество «попугаев» в Geekbench 4.

    Ни для кого не секрет, что наибольшее влияние на время компиляции оказывает:

    • Процессор, а точнее его частота, кэш и в меньшей степени количество ядер
    • Скорость чтения/записи SSD диска
    • Оперативная память (частота и объем)
    Для комфортной продуктовой разработки с использованием Xcode 9, Slack, HipChat, Telegram, SourceTree, Chrome, Zeplin и пр. рекомендуется минимум 16 Гб (больше лучше)

    Производительность рабочих станций


    image
    У нового iMac Pro SSD, конечно, самый быстрый
    image
    У «попугаев» по большому счету нет четкой корреляции со скоростью и временем сборки проектов. Далее будет видно почему. Но собрать цифры и проверить все же требовалось.

    Результаты тестов


    image
    Первый тест и сразу же необычный результат. Время «чистой» сборки на хаке быстрее и равно времени сборки на iMac Pro на SBS и NBS, соответственно.
    Сначала закралось сомнение, как такое может быть, чтобы 6 ядерный процессор обгонял/был равным 18 ядерному?! Были произведены контрольные замеры, но все осталось без изменений (1-2 секунды разницы на уровне погрешности).

    image
    Второй тест, все вроде бы встало на свои места. Но разница 2/4 секунды не настолько существенна для такого мощного железа.
    image
    Третий тест, тут уже ситуация «лучше». Разница в 5/10 секунд на SBS/NBS в пользу iMac Pro.
    image
    Wikipedia так же подбросила сюрприз. Ну тут совсем странно, iMac 4K середины 2017 года быстрее iMac Pro конца 2017 года на NBS на 8 сек.
    А hack быстрее на целых 12 секунд!
    Видимо нужен контрольный замер на еще одном iMac Pro. Если еще один такой найдется, то будет замечательно.
    UPD: нашелся, пруфы позже

    image
    Telegram под Mac OS. Время сборки, конечно, космическое. Это связано с тем, что в проекте используется сгенерированный файл API (на время компиляции которого не выполняются другие задачи) и кодовая база самого проекта достаточно большая. И уже становится не так интересно, хакинтош опять быстрее. Кстати, на NBS проект не собирается, требуется много лишних действий. Поэтому этот вариант здесь отброшен.
    image
    Ну и последний тест на Wire. Собирается, как и Telegram только на SBS. iMac впереди.
    Как видно из комментариев к тестам, наибольший интерес (по крайней мере для меня) представляло сравнение хака и топовой модели компьютера Apple. Но в первом тесте даже iMac 4K 2017 не так сильно отстал от iMac Pro – разница всего 8/10 секунд, а в 4-м обогнал (что повторюсь очень странно).

    По результатам проведенных экспериментов можно сделать вывод, что производительность hackintosh вполне сопоставима с нативным Mac одной из топовой сборки стоимостью ~10k$ и соответственно хак может быть успешно использован в продуктовой разработке. Вероятно, что не последнее место в таких результатах могла оказать старая файловая система HFS+. По моим личным ощущениям после месяца работы на MBP 17 с APFS и последующей переустановки High Sierra на HFS+ скорость сборки, да и работа ноутбука в целом стала быстрее. Это подтверждают и разработчики kexts (драйверов) под hackintosh на различных форумах.

    Выводы


    • Время сборки проектов зависит от скорости диска (причем скорость записи имеет больший приоритет).
    • Частота процессора имеет больший приоритет над количеством ядер.
    • Использование флага NO в команде defaults write com.apple.dt.Xcode BuildSystemScheduleInherentlyParallelCommandsSerially -bool NO в зависимости от проекта и вашего mac уменьшает время сборки на 9-15% (по крайней мере в Xcode версии 9.3).
    • NBS в swift проектах дает максимальный прирост 67%.
    • NBS в objc проекте (Wikipedia) показывает значительный прирост в производительности (150%) – как будто новую систему сборки писали специально под objc.
    • На Fusion Drive NBS медленнее или примерно равен стандартной – по всей вероятности используется какой-то особый способ получить профит от быстрых дисков SSD.
    • На NBS в проектах со swift и миксом из objc/swift почти сразу падает подсветка (ну это вы знаете).
    • Причем на маках с Fusion Drive при использовании NBS подсветка не падает

    В конце статьи назрел вопрос – стоят ли затраченные время, деньги и силы на поиск, покупку комплектующий, их последующие сборку и настройку?

    Этот вопрос я раскрою в следующем эпизоде.

    P.S.: Спасибо ребятам из Badoo и Telegram, за то что нашли время и возможность для проведения тестов на iMac Pro. Спасибо, Юрию, Евгению и Кириллу за то, что смогли пройти «лайт» версию тестов на своих домашних компьютерах.
    UPD:
    В настоящее время пройти тесты можно только на Xcode 9.2.
    После выхода Xcode 9.3 при сборке некоторых проектов возникают ошибки.В ближайшее время ошибки будут исправлены, а результаты тестов и репозитории с проектами обновлены.
    UPD 21.04.2018:
    Репозитории обновил, можно сравнивать свое железо.
    Как только кто-то пройдет на mac mini, mac pro или, например, macbook pro 2014 года добавлю их результаты в диаграммы. Больше интересны процессоры i7/i5.

    Следующий эпизод Стоимость хака

    Дизайн — Людмила Котович

    Комментарии 24

      +1
      Насколько изменится ваше мнение о материале, если вместо
      Эта статья начинает собой цикл из нескольких об использовании Hackintosh в повседневной работе [для разработки под OSX/iOS платформу]...
      будет написано
      Эта статья начинает собой цикл из нескольких об использовании хакнутой Windows 10 в повседневной работе для разработки под Windows платформу...
      ?
      Мы — программисты. Мы ценим чужой труд, чужой код, уважаем и соблюдаем лицензии на чужой код. Мы зарабатываем достаточно, чтобы купить себе и софт и железо для нашей работы.
        –1
        Мы ценим чужой труд, чужой код, уважаем и соблюдаем лицензии на чужой код.

        Кстати, интересно, можно ли приобрести OSX отдельно от мака? Если нельзя, то позволяет ли законодательство использовать OSX, приобретённую с маком для сборки хакинтоша?

          +1
          Уже было: в апреле 2008 года компания Psystar начала производить и продавать персональные компьютеры «OpenMac» (позже — «Open Computers»), и поставляла их с установленной на диск патченной Mac OS X под их хакинтош, в комплект докладывала нераспакованную, купленную отдельно, коробочную версию Mac OS X. Apple и Psystar обмениваются исками и аппеляциями, в итоге Psystar проигрывает по всем фронтам и сворачивает деятельность.

          Хорошо описано, например, в книге Licensing Intellectual Property: Law and Applications, by Robert W. Gomulkiewicz (ссылка).
            0

            Я думаю, что продавать их вот так это юридически одно, а купить макос и поставить самому это юридически другое.

              0
              Вроде как уже не продаётся:
              The software… licensed, not sold, to you by Apple...
                0
                This License allows you to install and use one copy of the Apple Software on a single Apple-labeled computer at a time.

                Это с одной стороны. Должна быть бирка эппл. Но с другой стороны, вопрос, какую силу это всё имеет с точки зрения законодательства РФ. Тут интересно юриста послушать.


                Расскажу короткую байку. Я когда-то присутствовал на конференции по условно патентоведению и там был юрист, который уверенно говорил, что согласно нашему законодательству, можно спокойно ставить пиратскую копию Windows домой и никто тебе ничего не может сказать, потому что ты для личного использования это делаешь.


                Мне до сих пор кажется, что это какая-то глупость, но говорил юрист, с юридической практикой и достаточно молодой. И я иногда думаю, а вдруг правда оно тогда так и было. В конце концов даже сейчас, сколько бы тебе не писали в лицензионном соглашении, что ты обязан отдать первенца богу-крокодилу — его можно не отдавать.

                  0
                  говорил юрист, с юридической практикой и достаточно молодой

                  Мне кажется дело именно в опыте. Опытный юрист бы добавил «но я не рекомендую так делать, т.к. решение суда заранее не известно.»
                  Зачем испытывать нашу судебную систему, терять время и, возможно, деньги.
          +1
          Вы, наверное, представляете какую-то группу «мы — программисты»? В противном случае было бы уместнее говорить от первого лица. Тогда все остальные «мы программисты» воспримут вашу точку зрения адекватно — именно как вашу точку зрения. А рассказывать в детсадовском стиле, что «мы моем руки перед едой», и «Волга впадает в Каспийское море», право, не стоит.
            0
            все верно сказано, мы уважаем чужой труд и благодарны разработчикам Эппл но маркетингу Эппл нужно заботиться о постоянных клиентах компании и делать удобные продукты а не прыгать из крайности в крайность (мини компьютер старый Эппл про и все в одном новый iMac). Мне пришлось недавно собрать хаконтош (8700, самсунг 960, 32 ГБ памяти) хотя дома есть пара лаптопов Apple (один отдал жене, второй лежит для командировок). Работал с лаптопом и внешним монитором но посленее время охлаждение начало «завывать», чистка от пыли не помогала, судя по всему последние обновления OS сильнее нагружают железо или задачи подросли но лаптоп перестал тянуть (i7, 16GB, retina, 2015). iMac Pro с VESA mount в нашей провинции отсутствует (есть обычные) — съездил в Москву, нужно делать предоплату, ждать, потом снова ехать на поезде за дурындой 27". Почесал затылок и собрал хакинтош. Промахнулся только с видеокартой (nVidia).
            Лаптоп лежит в портфеле. Мучает меня совесть? Немного да. С другой стороны, лаптоп валяется без дела, если бы была возможность взять девелоперский лаптоп от Эппла, уже купил бы. Получается что Эппл подсадил меня на их систему, я к ней привык, купил софт а потом оказалось что должен идти в русле их маркетинговых планов (только iMac для нагруженой работы). Заменю ли хакинтош нормальным маком? Скорее всего да, как только их понаклепают немного больше и в России появятся свежие модели мак про в близости от моего дома, чтоб и сервис был подлиже в случае проблем. Проблема в том что мне нужна модульная мощная система от Мак а мне предлагают здоровый «все в одном» ящик. Как его перевозить в командировках? В чемодане? Был у меня такой опыт перевозки мониторов 27", дорого, рисковано и хлопотно. Эпплу нужно расширить линейку компьютеров а они ее наоборот сужают и убирают возможность кастомизации (на чем компании как OWC раньше кормились).
            0

            Довольно глупо, что отмечена важность скорости дисков, но не указаны их модели (as of now).

              0
              Указал модели SSD, обновил диаграммы
              0
              Ох елки, дико полезное лично для меня сравнение. Прям перестал глядеть голодными глазами на новый iMac. Странно, что в компиляции больше сыграла роль частота, а не многоядерность, как при том же рендере, например, я думал, будет наоборот. SSD по скоростям просто бешеный на новом Pro, но одно это (+моник и «у меня больше ядер») не должно создавать многократную разницу в цене. По статье остался вопрос, какое точно железо присутствовало в Хаке? Можете перечислить все (вообще все, без исключения) комплектующие, чтобы конфигурация оказалась рабочей, а многострадальная Sierra запускалась и работала без вопросов? А то меня от Хаков всегда останавливал только сложный процесс подбора комплекта. Сам сижу на MacBook Pro 2015, и, похоже, нечего даже дергаться, особо быстрее на новых компах не станет.
                +2
                Материнская плата: Gigabyte Aorus Z370 Gaming 5
                Процессор: i7-8700K
                Видеокарты: CG-Alpine и RX580 Nitro+
                Оперативная память: Crucial DDR4-2133 32 Gb
                SSD: Samsung 950 pro 512Gb
                Мониторы: LG UltraFine 5K, Asus VW248TLB

                Во второй статье будет подробный гайд по сборке и настройке под это железо.
                  –1
                  Благодарю!
                    –1
                    Пожалуйста.
                0
                Не меньше интересует как ведет себя хакинтош в плане стабильности, насколько геморно обновляться? Лично я пользуюсь маком не столько из за хкода, сколько из за стабильности и удобства разработки
                  0
                  Все достаточно стабильно.
                  Неожиданных перезагрузок нет.
                  Как на обычном маке — скачиваете обновление системы, устанавливаете и перезагружаетесь. Все.
                  В редких случаях перед обновлением требуется скачать и заменить свежие kext’ы и уже совсем в редких обновить настройки config.plist
                    0
                    Чтобы всё совсем нативно заработало, придётся немного поплясать. У меня похожий конфиг как в посте, только i7-7700K и Z1**, и для нормальной работы таких вещей, как сон, нужны были небольшие ритуальные пляски по гайду.
                    Ну и самое свежее железо лучше не брать, я год назад с этим процессором намучился.
                      0
                      А как узнать требуется ли дополнительные действия перед непосредственным обновлением? Надо ждать инструкции по обновлению на каких то сайтах? Каких?
                      0
                      Главное карточки Nvidia не брать, и собирать из относительно дефолтного для маков железа.
                      Про карточки говорю не просто так: оф. дрова как бы есть и регулярно обновляются, но они настолько ужасны, что лучше бы их не было — в каждом новом релизе либо добавляются новые лаги/баги, либо возрождаются старые.
                      Про AMD в последнее время особо ничего плохого не слышал, думаю уже на RX580 перелезать.

                      // Дисклеймер: вышесказанное относится только к макоси, я не знаю, насколько хороши дрова этих вендоров на других ОС.
                      0
                      Мегаполезно, спасибо!
                      Я скорее всего не проснулся окончательно с утра, так как не смог понять что такое «новая система сборки». Не укажете место в статье, где сказано об этом?
                        0
                        NBS — New Build System

                        image
                          0
                          Спасибо!
                        0
                        Производительность это здорово, но добиться стабильной работы некоторого софта у меня не вышло, когда я ковырял хакинтош пару лет назад. Возможно, что-то все-таки изменилось…

                        Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                        Самое читаемое