Esto puede sonar como una pregunta extraña, pero en mi departamento estamos teniendo problemas con la siguiente situación:
Estamos trabajando aquí en una aplicación de servidor, que está creciendo cada vez más, incluso en el punto en que estamos considerando dividirla en diferentes partes (archivos DLL), cargando dinámicamente cuando sea necesario y descargando luego, para poder manejar Los problemas de rendimiento.
Pero: las funciones que estamos utilizando pasan parámetros de entrada y salida como objetos STL, y como se menciona en una respuesta de desbordamiento de pila , esta es una muy mala idea. (La publicación contiene algunas soluciones ± y hacks, pero no todo parece muy sólido).
Obviamente, podríamos reemplazar los parámetros de entrada / salida por tipos C ++ estándar y crear objetos STL a partir de aquellos que alguna vez estuvieron dentro de las funciones, pero esto podría estar causando caídas en el rendimiento.
¿Está bien concluir que, en caso de que esté considerando construir una aplicación, que podría crecer tanto que una sola PC ya no pueda manejarla, no debe usar STL como tecnología?
Más información sobre esta pregunta:
parece haber algunos malentendidos sobre la pregunta: el problema es el siguiente:
mi aplicación está utilizando una gran cantidad de rendimiento (CPU, memoria) para completar su trabajo, y me gustaría dividir este trabajo en diferentes partes (ya que el programa ya está dividido en múltiples funciones), no es tan difícil crear algunas DLL fuera de mi aplicación y poner algunas de las funciones en la tabla de exportación de esas DLL. Esto daría como resultado la siguiente situación:
+-----------+-----------+----
| Machine1 | Machine2 | ...
| App_Inst1 | App_Inst2 | ...
| | |
| DLL1.1 | DLL2.1 | ...
| DLL1.2 | DLL2.2 | ...
| DLL1.x | DLL2.x | ...
+-----------+-----------+----
App_Inst1 es la instancia de la aplicación, instalada en Machine1, mientras que App_Inst2 es la instancia de la misma aplicación, instalada en Machine2.
DLL1.x es una DLL, instalada en Machine1, mientras que DLL2.x es una DLL, instalada en Machine2.
DLLx.1 cubre la función exportada1.
DLLx.2 cubre la función exportada2.
Ahora en Machine1 me gustaría ejecutar function1 y function2. Sé que esto sobrecargará Machine1, por lo que me gustaría enviar un mensaje a App_Inst2, pidiéndole a esa instancia de la aplicación que realice la función2.
Los parámetros de entrada / salida de function1 y function2 son objetos STL (Biblioteca de tipos estándar de C ++), y regularmente podría esperar que el cliente realice actualizaciones de App_Inst1, App_Inst2, DLLx.y (pero no todas, el cliente podría actualizar Machine1 pero no Machine2, o solo actualice las aplicaciones pero no las DLL o viceversa, ...). Obviamente, si la interfaz (parámetros de entrada / salida) cambia, entonces el cliente se ve obligado a realizar actualizaciones completas.
Sin embargo, como se menciona en la URL de StackOverflow referida, una simple compilación de App_Inst1 o una de las DLL puede hacer que todo el sistema se desmorone, de ahí mi título original de esta publicación, desaconsejando el uso de STL (Plantilla estándar de C ++ Biblioteca) para grandes aplicaciones.
Espero haber aclarado algunas preguntas / dudas.