Я знаю, что это не столько вопрос программирования, сколько актуальный.
Я работаю над довольно крупным кросс-платформенным проектом . В Windows я использую VС++ 2008. В Linux я использую gcc. В проекте около 40 тыс. Файлов. Windows от 10x до 40x медленнее, чем Linux при компиляции и связывании одного и того же проекта. Как я могу это исправить?
Однократное изменение инкрементного построения 20 секунд в Linux и > 3 минуты в Windows. Зачем? Я даже могу установить "золотой" компоновщик в Linux и получить это время до 7 секунд.
Аналогично git на Linux быстрее на 10x-40x, чем на Windows.
В случае git возможно, что git не использует Windows в оптимальном режиме, но VС++? Вы могли бы подумать, что Microsoft захочет сделать своих собственных разработчиков максимально продуктивными, а более быстрая компиляция проделает долгий путь к этому. Может быть, они пытаются поощрить разработчиков на С#?
Как простой тест, найдите папку с большим количеством подпапок и выполните простой
dir /s > c:\list.txt
в Windows. Сделайте это дважды и время второго запуска, чтобы он запускался из кеша. Скопируйте файлы в Linux и выполните эквивалентные 2 пробега и время второго запуска.
ls -R > /tmp/list.txt
У меня есть 2 рабочих станции с одинаковыми характеристиками. HP Z600s с 12-гигабайтом бара, 8 ядер на 3,0 га. В папке с ~ 400k файлами Windows занимает 40 секунд, Linux берет < 1 секунда.
Есть ли параметр реестра, который я могу настроить для ускорения работы Windows? Что дает?
Несколько немного релевантных ссылок, относящихся к времени компиляции, не обязательно i/o.
-
По-видимому проблема в Windows 10 (не в Windows 7) заключается в том, что закрытие процесса содержит глобальную блокировку. При компиляции с несколькими ядрами и, следовательно, с несколькими процессами эта проблема попадает.
-
Опция
/analyse
может отрицательно повлиять на перфоманс, поскольку она загружает веб-браузер. (Не важно здесь, но полезно знать)