Как компиляция исходного кода приводит к лучшей производительности, чем использование yum?
3 ответа
Ну, с yum вы получаете предварительно скомпилированную программу, которая подходит для дистрибутива.
При выборе исходной компиляции в том же дистрибутиве не будет ускорений, если вы не возитесь с опциями компилятора или не создадите статическую версию, которая связывает библиотеки с двоичным файлом, вместо того, чтобы связывать библиотеки во время загрузки.
Таким образом, простая загрузка исходного кода и выполнение компиляции не обязательно приведет к более быстрому выполнению. Во многих случаях это будет медленнее. Потому что люди, которые подготовили пакет, во много раз опытнее и осведомлены об этом конкретном пакете, чем вы.
Однако, если вы знаете, что делаете, вы можете настроить компилятор или даже использовать лучший компилятор и отредактировать базу кода, если это необходимо, для получения лучшего результата.
Когда вы компилируете программу, программа адаптируется к вашему оборудованию и не содержит дополнительных данных, необходимых для ее переносимости. Тем не менее, прирост производительности незначителен, поэтому вам не следует беспокоиться о компиляции своих материалов, если вы не помешаны на этом.
Еще один момент - это зависимости.
В Unix-подобных системах программы часто называют друг друга и имеют очень модульную структуру. Так, например, mplayer может выводить видео, используя DirectFB или aalib или libcaca, или используя стандартный кадровый буфер fbcon, используя видеовыход OpenGL, используя X и так далее.
Если вам, например, не нужен вывод ACII, созданный aalib и libcaca, при компиляции программы вы можете просто отключить их. С другой стороны, сопровождающий пакета может решить, что такие параметры очень популярны, и включить их в пакет.
Если вы используете пакет, части ненужного кода остаются в программе, и они могут замедлить выполнение.
Иногда это может ухудшиться. Сопровождающий пакет может решить скомпилировать программу с поддержкой какого-либо другого пакета. Затем этот пакет помечается как зависимый и должен быть установлен. Если ваша система по какой-то причине не работает с этим другим установленным пакетом, вы не сможете использовать программу, которую хотите использовать, из-за ее дополнительной поддержки для какого-либо пакета. У меня была такая проблема, когда PulseAudio был новым. Это просто не сработало бы в моей системе, и тогда у меня были проблемы с переключением на ALSA, потому что большое количество аудио пакетов зависело от Pulse, даже если поддержка Pulse не была критичной для работы пакета.