Ответ 1
Статическая компоновка создает более крупный исполняемый файл, чем динамическая компоновка, потому что он должен скомпилировать весь код библиотеки непосредственно в исполняемый файл. Преимуществом является сокращение накладных расходов, из-за того, что больше не нужно вызывать функции из библиотеки и где-то от нескольких до значительно более быстрого времени загрузки.
Динамически связанный исполняемый файл будет меньше, поскольку он помещает вызовы во время выполнения в библиотеки общего кода. Для этого есть несколько преимуществ, но важными с точки зрения скорости или оптимизации являются сокращение объема дискового пространства и потребляемой памяти и улучшенная многозадачность из-за сокращения общего потребления ресурсов (особенно в Windows).
Итак, это компромисс: есть аргументы, которые могут быть сделаны, потому что один может быть немного быстрее. Это будет зависеть от множества других вещей, например, насколько критичные по скорости процедуры в программе полагаются на вызовы функций библиотеки. Но важным моментом, который следует подчеркнуть в приведенном выше заявлении, является то, что он может быть немного быстрее. Разница в скорости будет почти незаметной и трудно отличить даже от нормальных ожидаемых колебаний.
Если вам действительно все равно, сравните его и посмотрите. Но я советую, что это пустая трата времени, и что есть более эффективные и более важные способы увеличить скорость вашего приложения. В долгосрочной перспективе вам будет намного лучше, учитывая факторы, отличные от скорости, когда вы решите "динамически связать или статически связать" решение. Например, статические ссылки могут быть рассмотрены, если вам нужно упростить развертывание приложения, особенно в различных пользовательских средах. Или динамическая компоновка может быть лучшим вариантом (особенно если эти общие библиотеки не являются вашими собственными), потому что ваше приложение автоматически воспользуется преимуществами обновлений, сделанных в любой из разделяемых библиотек, которые он вызывает, без необходимости поднимать палец.
РЕДАКТИРОВАТЬ: Корпорация Майкрософт рекомендует, чтобы вы предпочитали динамическое связывание по статической ссылке:
Не рекомендуется перераспределять Приложения C/С++, которые статически ссылку на библиотеки Visual С++. это часто ошибочно полагали, что статическая привязка вашей программы к Библиотеки Visual С++ можно значительно улучшить производительность приложения. Однако воздействие на динамическую загрузку Библиотеки Visual С++ незначительны почти во всех случаях. Более того, статическая связь не позволяет обслуживание приложения и его зависимых библиотек либо автора приложения или Microsoft. Для Например, рассмотрите приложение, которое статически связана с конкретным библиотека, работающая на клиентском компьютере с новой версией этой библиотеки. Приложение по-прежнему использует код из предыдущая версия этой библиотеки, и не пользуется библиотекой улучшения, такие как безопасность усовершенствования. Авторы C/С++ приложениям настоятельно рекомендуется продумать сценарий обслуживания прежде чем принять решение о зависимых библиотек и использовать динамические связывая по возможности.