Visual Studio 2010 C ++ Linker performance para grandes proyectos.

En mi empresa seguimos usando Visual Studio 2005, pero estamos mirando a Visual Studio 2010 con la esperanza de que acelerará algunas partes de nuestro ciclo de desarrollo. En este momento, estamos más interesados ​​en el rendimiento del enlazador C ++ de Visual Studio 2010. Al crear nuestra aplicación, estamos viendo los tiempos de enlace entre 40 segundos y 2 minutos, dependiendo de la configuración de la máquina (SSD vs HDD) y si cosas ya está en el caché de disco de Windows. Una prueba simple en la que usamos el enlazador VS2010 en lugar del enlazador VS2005 mostró una mejora de alrededor del 25%. Esperábamos ver una mejora mucho mayor porque pensamos que el enlazador ahora podría hacer uso de múltiples núcleos.

¿Es este 25% realmente la mejora que deberíamos esperar al cambiar a VS2010, o hay algunos conmutadores mágicos de enlace que reducen los tiempos de enlace a niveles aceptables?

Mi entendimiento es que el gran cambio (en cuanto al rendimiento) que MS hizo al vinculador en VS2010 es que la escritura del archivo .pdb se realiza en un hilo separado. Por supuesto, dado que el enlazador hace mucho más que esto, hay un límite en cuanto a cuánto mejorará el tiempo total del enlace:

  • Rendimiento del enlazador

Y aquí hay un artículo que muestra cómo puede obtener estadísticas de tiempo más detalladas si está interesado en ese análisis:

  • Consejo de VC ++: obtenga diagnósticos detallados de rendimiento de comstackción utilizando MSBuild, comstackdor y enlazador

De todos modos, una mejora del 25% en la velocidad con solo introducir un nuevo conjunto de herramientas parece ser un buen resultado para mí.

Un 25% menos de tiempo no es malo. Si desea tiempos de enlace más rápidos, intente vincular dinámicamente con DLL en lugar de enlazar con bibliotecas estáticas. Esto es a menudo mucho más rápido.