-
Dinámica de la vinculación puede reducir el total de consumo de recursos (si hay más de un proceso de acciones de la misma biblioteca (incluyendo la versión en "el mismo", por supuesto). Creo que este es el argumento de que las unidades de su presencia en la mayoría de los entornos. Aquí los "recursos" incluye espacio en disco, memoria RAM y espacio de caché. Por supuesto, si el enlazador dinámico no es lo suficientemente flexible que existe un riesgo de DLL hell.
-
Dinámica de vinculación significa que las correcciones de errores y mejoras de las bibliotecas se propagan a mejorar su producto sin necesidad de enviar nada.
-
Los Plugins siempre llame para la dinámica vincular.
-
Estática de vinculación, significa que usted puede saber el código se ejecute en muy entornos limitados (temprano en el proceso de arranque, o en modo de rescate).
-
Estática de los enlaces pueden hacer binarios más fácil de distribuir a los diversos entornos de usuario (en el coste de envío de una grande y más los que consumen recursos del programa).
-
Estática de la vinculación puede permitir ligeramente más rápido el inicio de los tiempos, pero esto depende en cierta medida del tamaño y la complejidad de su programa y en los detalles de la OSs, la carga de la estrategia.
Algunas modificaciones para incluir el muy relevante sugerencias en los comentarios y en otras respuestas. Me gustaría señalar que la manera de romper en esto depende mucho de lo que medio ambiente tiene previsto ejecutar en. Mínima de los sistemas integrados pueden no tener los recursos suficientes para apoyar la vinculación dinámica. Ligeramente más pequeño posible que los sistemas de apoyo a la vinculación, porque su memoria es lo suficientemente pequeño como para hacer que la memoria RAM de ahorros de la vinculación dinámica muy atractiva. Completo de los PCs de consumo tienen, como Marca de notas, enormes recursos, y que, probablemente, puede dejar la comodidad de problemas de la unidad de pensamiento en esta materia.
Para abordar el rendimiento y la eficiencia: depende.
Clásicamente, las bibliotecas dinámicas requieren algún tipo de capa de pegamento que a menudo significa el doble de expedición o de una capa extra de indirección en función de direccionamiento y puede costar un poco de velocidad (pero es función del tiempo de llamada en realidad una gran parte de su tiempo de funcionamiento???).
Sin embargo, si está ejecutando varios procesos a la que todos llaman la misma biblioteca mucho, usted puede ahorrar líneas de caché (y por lo tanto la ganancia en el rendimiento de carrera) cuando se utiliza vinculación dinámica relativa mediante la vinculación estática. (A menos que OS moderno son lo suficientemente inteligentes como para aviso de segmentos idénticos en binarios enlazados estáticamente. Parece duro, alguien sabe?)
Otro problema: el tiempo de carga. Usted paga la carga de los costos en algún momento. Cuando usted paga este costo depende de cómo OS funciona tan bien como lo vinculación de utilizar. Tal vez usted prefiere aplazar el pago hasta que usted sabe que usted necesita.
Tenga en cuenta que la electricidad estática vs--la vinculación dinámica es tradicionalmente no un problema de optimización, debido a que ambas involucran compilación independiente de objeto de archivos. Sin embargo, esto no es necesario: un compilador puede, en principio, "compilar", "bibliotecas estáticas" a un digerido AST forma inicialmente, y en "link" ellos mediante la adición de los ASTs a las generadas por el código principal, y así empoderar a la optimización global. Ninguno de los sistemas que uso hacer esto, así que no puedo comentar sobre lo bien que funciona.
El camino a la respuesta de rendimiento preguntas es siempre por pruebas (y el uso de un entorno de prueba tanto como el entorno de implementación como sea posible).