Будет ли производительность лучше (быстрее), если я вручную скомпилирую исходный код для программного компонента для фактического компьютера, на котором он будет использоваться, по сравнению с тем, был ли источник скомпилирован на другой платформе, возможно, для многих различных архитектур? Я получил некоторые хорошие результаты компиляции исходного кода, который я скачал, и мне интересно, было ли это связано с его компиляцией, а не с загрузкой предварительно скомпилированного двоичного файла, что часто происходит с обновлениями программного обеспечения.
binary
compilation
Никлас
источник
источник
Ответы:
Во многих (если не в большинстве) случаях да. Это потому, что компилятор может создавать собственный код, оптимизированный для этого конкретного процессора и среды. Код более «нацелен».
источник
Компиляция из исходников дает вам преимущество установки флагов компилятора так, как вы хотите для вашей конкретной платформы. Загрузка пакета, который был скомпилирован с точно такими же настройками, что и у вас, не будет иметь никакого значения, но изменение настроек по умолчанию может принести вам значительные улучшения.
Например, если двоичные файлы, предлагаемые для загрузки, были скомпилированы для отладки (преднамеренно или по ошибке), включение более агрессивной оптимизации повысит производительность практически во всех ситуациях. С другой стороны, если скомпилированный код оптимизирован до максимума, вы не увидите никакой разницы.
источник
Это действительно зависит от двух используемых компиляторов и флагов компилятора. Обычно параметры компилятора и флагов на вашем локальном компьютере больше подходят для вашего конкретного компьютера, если у вас все настроено правильно.
Но, если, например, предварительно скомпилированный двоичный файл получился с гораздо лучшим оптимизирующим компилятором (или специальным тестом, разработанным с флагами, настроенными для этого конкретного фрагмента кода и, к счастью, подходящими для вашей системы) по сравнению с компилятором на ваша система, то возможно, что любой компилятор в вашей системе может на самом деле привести к снижению производительности.
источник