Sé que es muy tarde para la fiesta, pero el tiempo cambia y las respuestas permanecen. C ++ 11 tiene cambios bastante radicales, muchos de los cuales son para aumentar el rendimiento de C ++ y la biblioteca estándar. Parece que aquellos que no usan STL o Boost, tienden a no mantenerse al día con los nuevos estándares tampoco, dejando que las soluciones caseras no tengan mejoras importantes, por supuesto, este no es siempre el caso.
He usado STL en todos los proyectos desde mediados de los 90 hasta hoy, con la excepción de un corto tiempo en EA. Creo que el lado anti STL tenía algunas razones marginalmente racionales para no usarlo. Esos se han ido en gran medida. Los asignadores personalizados son una solución, el uso de la reserva es otra, y no pasar cosas por valor es un tercero, pero estos son bastante simples y cualquier programador debería saberlo. Sin embargo, lo más importante es el uso de algoritmos. Los escritores de compiladores saben exactamente lo que hace for_each () y pueden optimizar el código. Eso no puede ocurrir con un bucle de inicio. for_each () en un objeto const es aún mejor. Microsoft optimiza para cada uno de muchas maneras, incluida la serialización. También tienen la biblioteca AMP que tiene parallel_for_each (). Si tiene la oportunidad, hable con los ingenieros del compilador sobre esto. Los compiladores de consola van a optimizar lo que se usa, así que ' es un problema de huevo y gallina. Microsoft se está volviendo muy pesado con C ++ 11 y el próximo XBox no será diferente. No tengo idea sobre PS4, todavía no tenemos una.
Los asignadores personalizados son una forma de manejar el problema de memoria, pero otra opción (a menudo pasada por alto) es usar new y delete basado en clases. Se pueden obtener enormes aumentos de rendimiento de esta manera.
La noción de que Boost y STL tienen una visión estrecha de la resolución de problemas es pura locura. Estoy sorprendido de cuántas cosas en STL y Boost se pueden personalizar a través de rasgos y políticas. Busque una cadena independiente de mayúsculas y minúsculas como ejemplo.
Con respecto a los tiempos de enlace largos y la hinchazón de código, la nueva plantilla externa debería ayudar con esto. En general, encuentro que los tiempos de compilación largos provienen del exceso de acoplamiento y el mal uso de pch.
La razón más convincente para usar STL en lugar de homepun es que hay millones de personas que pueden ayudarlo con STL. Como siempre, no optimices prematuramente y prueba, prueba, prueba.