¿Cuáles son las mejores formas de acelerar el tiempo de compilación en Visual Studio 2005 para una solución que contiene principalmente proyectos C++?Agilice la compilación en Visual Studio 2005
Respuesta
Además cabeceras pre-compilar, hay una serie de otras cosas que te pueda estar ralentizando: software de detección de
- Virus - puede tener un impacto desagradable en construcciones. Si tiene un comprobador de virus funcionando, intente apagarlo y vea qué tipo de mejora obtiene.
- RAM baja: la memoria RAM no suficiente provocará muchas lecturas más de disco y le ralentizará. cont ->
- Disco duro lento - Tiene que escribir en el disco independientemente y un disco lento, como los que están presentes en muchas computadoras portátiles y sistemas de gama baja, matará sus compilaciones. Puede obtener una unidad más rápida, una matriz RAID o SSD
- Procesador (s) lento ... por supuesto.
- Poco probable, pero: verifique si sus proyectos hacen referencia a recursos compartidos de red. Tener que arrastrar archivos a través de la red con cada compilación supondría una gran desaceleración.
EDITAR cuantos más pensamientos:
- Si la solución contiene un gran número de proyectos que usted podría considerar la creación de otras soluciones "Sub" que contienen sólo los proyectos que está trabajando activamente en. Esta posibilidad depende de cuán interrelacionados estén sus proyectos.
- Las compilaciones de proyectos pueden tener comandos de eventos de compilación pre y post asociados. Compruebe las propiedades de sus proyectos para ver si hay algún evento de compilación costoso especificado.
Los encabezados precompilados pueden ser útiles si incluye encabezados complejos (STL, Boost por ejemplo) directamente en una gran cantidad de archivos.
Asegúrate de que tu construcción no acceda a la red inadvertidamente o intencionalmente.
Puede crear un pre-compiled header de los archivos que normalmente no cambiará con frecuencia. Esto puede aumentar drásticamente tu tiempo de compilación.
Nunca me di cuenta de esto cuando comencé a usar Visual Studio. Cambié de Code :: Blocks, que parece que lo hace automágicamente para ti. –
Si tiene una CPU multinúcleo, use /MP compiler option.
Editar: What techniques can be used to speed up C++ compilation times?
uso g ++, así que no estoy seguro, pero hasta donde yo sé, vs2005 también admite esta opción, pero no está documentado. – bmeric
Creo que VS2005 SOPORTA/MP pero no está documentado. – Puppy
VS2005 ya realizará compilaciones concurrentes en máquinas MP, dentro de las limitaciones de las dependencias del proyecto. –
Si usted tiene una gran cantidad de proyectos en la solución de eliminar algunas de ellas. Si se hace referencia a ellos como proyectos, puede hacer referencia a los resultados binarios en su lugar (use el botón Examinar en el cuadro de diálogo Agregar referencia). Esto elimina una gran cantidad de comprobación de dependencia en la solución. No es ideal pero acelera las cosas.
- Unity builds.
- Precompiled headers.
- Windows 7 se compila mucho más rápido que Windows XP (si es relevante para usted).
- Desactive los escáneres antivirus.
- Minimice las dependencias (es decir,
#include
de los archivos de encabezado). - Minimiza la cantidad de código de plantilla.
En el nivel de código, es útil minimizar la cantidad de encabezados incluidos por otros encabezados. Repetidamente cargar y leer archivos puede tener un gran impacto. En su lugar, adelante declare cosas siempre que sea posible. Por ejemplo:
#include <iosfwd>
#include <string>
#include "M.h"
#include "R2.h"
#include "A2.h"
class M2;
class A;
class R;
template<class C> class T;
class X{
M member; // definition of M is required
M2 *member2; // forward declaration is sufficient for pointers & references
public:
// forward declaration of argument type A is sufficient
X(const A &arg);
// definition required for most std templates and specializations
X(const std::string &arg);
// forward declaration of your own templates is usually okay...
void f(T<int> t);
// unless you're defining a new one. The complete definition
// must be present in the header
template<class Z>
void whatever(){
// blah blah
}
R f(); // forward declaration of return type R is sufficient
// definitions of instantiated types R2 and A2 are required
R2 g(A2 arg){
return arg.h();
}
// ostream is forward-declared in iosfwd
friend std::ostream &operator << (std::ostream &o, const X &x);
};
Los usuarios de esta clase tendrán que #include
lo archivos proporcionan las definiciones de clases si realmente llamar a cualquiera de X(const A&)
, f(t<int>)
, f()
o operator <<
.
Las plantillas casi seguramente se sumarán a la sobrecarga de inclusión. Por lo general, esto vale su poder, en mi opinión. Cuando crea sus propias plantillas, la definición completa debe residir en el archivo de encabezado; no puede ir en un archivo cpp para compilación separada. Las plantillas estándar no pueden ser declaradas hacia adelante, porque las implementaciones pueden proporcionar parámetros de plantilla adicionales (con argumentos predeterminados) y las declaraciones avanzadas de plantillas deben listar todos los parámetros de la plantilla. El encabezado iosfwd forward-declara todas las plantillas y clases de flujo estándar, entre otras cosas. Sus propias plantillas pueden ser declaradas hacia adelante siempre y cuando no instale ninguna especialización.
Los encabezados precompilados también pueden ayudar, pero la mayoría de los compiladores limitan la cantidad que puede incluir en un archivo fuente (Visual Studio lo limita a uno), por lo que no son una panacea.
La solución que hemos utilizado fue IncrediBuild. Solo tira más hardware al problema. Además de todas las máquinas de desarrollo (bastante potentes ellas mismas), teníamos varios servidores de 4 núcleos haciendo nada más que compilar.
Cambie su Plataforma de soluciones en la opción "Cualquier CPU" que se proporciona en la parte superior de la visual stdio, entonces la velocidad de compilación de su programa se incrementará definitivamente.
- 1. Visual Studio (2005 y 2008) ¿Completó la alerta de compilación?
- 2. LNK 2005 en Visual C++ en Visual Studio 2010
- 3. Visual Studio 2005 Accesos directos
- 4. ¿Cambiar icono de la aplicación en Visual Studio 2005?
- 5. Error de LNK 2005 en Visual Studio 2005
- 6. Configurando F # en Visual Studio 2005
- 7. ¿Integración Mercurial en Visual Studio 2005?
- 8. Eventos previos a la compilación en VB6 Ide (similar a Visual Studio 2005)
- 9. Visual Studio sigue ejecutando la compilación anterior
- 10. C# Compilación sin Visual Studio
- 11. Visual Studio 2005 - 'Actualización de IntelliSense' cuelgue
- 12. Compilación Qt - Visual Studio 2010
- 13. Visual Studio 2005. Archivo RC incluye
- 14. ¿Dónde está Visual Studio 2005 Express?
- 15. Uso de memoria de Visual Studio 2005
- 16. Visual Studio Estadísticas de compilación
- 17. ¿Dónde descargar visual studio express 2005?
- 18. Cómo editar rutas del sistema de compilación en Visual Studio 2005
- 19. ¿Cómo detener una compilación en Visual Studio?
- 20. Compilación de ensamblaje en Visual Studio
- 21. ¿Cómo degradar la solución de Visual Studio 2010 a Visual Studio 2005?
- 22. ¿Vale la pena cambiar de Visual Studio 2005 a Visual Studio 2008?
- 23. invocando funciones durante la depuración con Visual Studio 2005?
- 24. Visual Studio 2008: ¿Vale la pena actualizar desde 2005?
- 25. Visual Studio 2005 Designer no agrega controles a aspx.Designer.cs
- 26. Visual Studio: información de depuración en la compilación de lanzamiento
- 27. Beneficios de la opción 'Optimizar código' en Visual Studio compilación
- 28. Visual Studio 2008 - Mover archivos en la compilación a bin/
- 29. Cómo incluir carpetas específicas en la compilación con visual studio
- 30. ¿Varios eventos previos a la compilación en Visual Studio?
Si no desea desactivar completamente la comprobación de virus, muchos escáneres le permiten especificar excepciones. Al agregar '* .c, * .cpp, * .h * .hpp, * .obj, * .lib, * .pch, * .ncb' a la lista de excepciones obtiene el 95% de la aceleración, y aún captura todos los elementos comunes. virus. – MSalters
Las cuotas de red son un gran cuello de botella. Mi tiempo de compilación pasó de ~ 1 minuto (para un proyecto de demostración trivial de 1 página de código) a ~ 1 segundo cuando cambié de nuestro recurso compartido de red a mi SSD local. –