Sé que esto no es tanto una pregunta de programación, pero es relevante.
Trabajo en un proyecto multiplataforma bastante grande . En Windows uso VC ++ 2008. En Linux uso gcc. Hay alrededor de 40k archivos en el proyecto. Windows es 10x a 40x más lento que Linux al compilar y vincular el mismo proyecto. ¿Cómo puedo arreglar eso?
Una compilación incremental de un solo cambio 20 segundos en Linux y> 3 minutos en Windows. ¿Por qué? Incluso puedo instalar el enlazador 'gold' en Linux y reducir ese tiempo a 7 segundos.
Del mismo modo, git es 10x a 40x más rápido en Linux que Windows.
En el caso de git, ¿es posible que git no esté utilizando Windows de la manera óptima sino VC ++? Uno pensaría que Microsoft querría hacer que sus propios desarrolladores fueran lo más productivos posible y una compilación más rápida contribuiría en gran medida a eso. ¿Quizás están tratando de alentar a los desarrolladores a C #?
Como prueba simple, encuentre una carpeta con muchas subcarpetas y haga una simple
dir /s > c:\list.txt
en Windows Hazlo dos veces y cronometra la segunda ejecución para que se ejecute desde el caché. Copie los archivos a Linux y realice las 2 ejecuciones equivalentes y cronometre la segunda ejecución.
ls -R > /tmp/list.txt
Tengo 2 estaciones de trabajo con exactamente las mismas especificaciones. HP Z600s con 12 gig de ram, 8 núcleos a 3.0 ghz. En una carpeta con ~ 400k archivos, Windows tarda 40 segundos, Linux tarda <1 segundo.
¿Hay alguna configuración de registro que pueda configurar para acelerar Windows? ¿Lo que da?
Algunos enlaces ligeramente relevantes, relevantes para los tiempos de compilación, no necesariamente de E / S.
Aparentemente hay un problema en Windows 10 (no en Windows 7) que al cerrar un proceso tiene un bloqueo global . Al compilar con múltiples núcleos y, por lo tanto, con múltiples procesos, este problema afecta.
La
/analyse
opción puede afectar negativamente a perf porque carga un navegador web . (No es relevante aquí pero es bueno saberlo)