какой из них рекомендуется: использование статического lib против динамического lib (общий объект) - PullRequest
4 голосов
/ 02 февраля 2010

Я работаю с приложением в Linux. Он поддерживает как статические, так и динамические (.so) версии

С точки зрения производительности, какую версию должен использовать пользователь? Приложение выполняет вычислительные задачи, которые требуют нескольких часов процессорного времени.

Есть ли другие преимущества использования одной библиотеки над другой?

Спасибо

Ответы [ 4 ]

4 голосов
/ 02 февраля 2010

С точки зрения чистой производительности:

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

Тем не менее, я не думаю, что это имело бы какое-то реальное значение.

Из любых других точек

Используйте разделяемый объект, у него слишком много преимуществ перед статической библиотекой, что это просто лучшая альтернатива.

3 голосов
/ 02 февраля 2010

С точки зрения производительности, различия минимальны, если динамическая библиотека не будет загружаться и выгружаться часто.

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

Динамическая библиотека может также использоваться несколькими исполняемыми файлами. Это основная причина, по которой я использовал динамические библиотеки в прошлом.

2 голосов
/ 02 февраля 2010

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

1 голос
/ 02 февраля 2010

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

В любом случае, единственный способ быть уверенным в этом: проверить его самостоятельно.

...