Компилирование против использования встроенных двоичных файлов производительности?

11

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

Никлас
источник
2
Компиляция для совместимости со многими архитектурами потенциально устраняет некоторые оптимизации, которые могут быть возможны при компиляции для одной архитектуры.
Роберт Харви
1
Помимо большей нацеленности (которая почти всегда будет полезна), вы, вероятно, также столкнетесь с большими различиями между компиляторами - разные компиляторы поддерживают разные оптимизации, и иногда узкие места производительности могут быть оптимизированы одним, но не другим.
Даниэль Б

Ответы:

8

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

epistemex
источник
7

Компиляция из исходников дает вам преимущество установки флагов компилятора так, как вы хотите для вашей конкретной платформы. Загрузка пакета, который был скомпилирован с точно такими же настройками, что и у вас, не будет иметь никакого значения, но изменение настроек по умолчанию может принести вам значительные улучшения.

Например, если двоичные файлы, предлагаемые для загрузки, были скомпилированы для отладки (преднамеренно или по ошибке), включение более агрессивной оптимизации повысит производительность практически во всех ситуациях. С другой стороны, если скомпилированный код оптимизирован до максимума, вы не увидите никакой разницы.

dasblinkenlight
источник
Так что мои усилия по компиляции не были напрасными. Я загрузил исходный код в mod_jk и скомпилировал его, и он стал очень быстрым, и мне интересно, было ли это из-за ручной компиляции. Спасибо за ответ.
Никлас
1

Это действительно зависит от двух используемых компиляторов и флагов компилятора. Обычно параметры компилятора и флагов на вашем локальном компьютере больше подходят для вашего конкретного компьютера, если у вас все настроено правильно.

Но, если, например, предварительно скомпилированный двоичный файл получился с гораздо лучшим оптимизирующим компилятором (или специальным тестом, разработанным с флагами, настроенными для этого конкретного фрагмента кода и, к счастью, подходящими для вашей системы) по сравнению с компилятором на ваша система, то возможно, что любой компилятор в вашей системе может на самом деле привести к снижению производительности.

hotpaw2
источник