¿Qué es más importante CPU o RAM para compilar software grande, por ejemplo, bootstrapping gcc?

11

Estoy buscando comprar una computadora nueva pronto, y quiero una máquina con el mejor rendimiento para tiempos de compilación rápidos.

Entonces, ¿debería importarme obtener una CPU de cuatro núcleos con los GHz más altos que pueda pagar, o debería invertir en una RAM de mayor velocidad?

¿Cuál es su recomendación para qué tipo de RAM debo elegir?

El rendimiento gráfico no importa, compilando un montón de software y ejecutando simulaciones matemáticas.

Dima
fuente

Respuestas:

8

Yo diría que ninguno. En su lugar, obtenga un disco duro SSD rápido . Por supuesto, también necesitas una CPU y una cantidad de RAM adecuadas, pero sí ...

Svish
fuente
2
Bueno, no obtuve un SSD, en cambio obtuve 32 GB de RAM y compilé todo en RAM en tmpfs ... incluso más rápido que SSD =)
Dima
1
Bueno, esa es la misma idea: p
Svish
2
Estoy en desacuerdo. Obtuve una unidad SSD para mi computadora portátil y no hizo mucha diferencia en la velocidad de compilación. Por otro lado, obtener una nueva computadora con casi el triple de la velocidad de la CPU y solo 4GB contra 6GB en la máquina SSD hizo que la compilación fuera casi 3 veces más rápida. anandtech.com/show/2829/25 no encuentra una mejora notable en la velocidad del compilador con un SSD, mientras que blog.hypercomplex.co.uk/index.php/2010/06/… encuentra una mejora del 23%. Me parece lógico que si tienes suficiente memoria, la compilación implica muy poco uso del disco.
Chris Dragon
1
Otro pensamiento es que es posible que algunos compiladores utilicen muchos archivos temporales para compilar en lugar de memoria, en cuyo caso un SSD o un disco RAM ayudarían más. Sin embargo, no esperaría que los compiladores modernos fueran diseñados de esa manera ahora que la memoria es barata y grande y el sistema maneja la paginación en el disco cuando se está agotando. Usando XCode 3.2.6 (basado en gcc 3 o 4), SSD tuvo poco beneficio.
Chris Dragon
Un SSD marca una diferencia considerable en grandes proyectos / soluciones que utilizan mucho la copia / movimiento de archivos. No he usado RAM tmpfs-style, personalmente, pero he escuchado cosas buenas al respecto. Para proyectos más pequeños, probablemente esté bien. ¿Para los grandes? Podría ser insuficiente.
kayleeFrye_onDeck
4

Probablemente, la RAM te dará más por tu dinero. La compilación, especialmente las aplicaciones grandes, requiere mucha E / S y tener más RAM significa que puede ahorrar más tiempo de paginación hacia y desde el disco. La mayoría de las CPU de hoy en día, especialmente si utiliza un quad-core barato, proporcionará mucha potencia de CPU para su compilación, pero contar con la RAM ayudará con los datos de ida y vuelta.

Pensándolo bien, depende de tus simulaciones matemáticas y procesos de construcción. ¿Son paralelizables? De lo contrario, agregar más núcleos realmente no hará nada para acelerarlo, aunque los nuevos chips Intel (Core i7) son bastante rápidos por núcleo.

Palanqueta
fuente
1
¿Qué tiene que ver la compilación con el disco?
Arash
2

Yo diría que consiga cargas y cargas de RAM y use ramdisks para el almacenamiento temporal. Esto aumentará dramáticamente la velocidad de compilación. Una CPU rápida de varios núcleos también estaría bien, pero creo que se beneficiaría más de una gran cantidad de ram. Echa un vistazo a este artículo para obtener algunas ideas. Aquí hay más información y algo más aquí . Creo que usar RAM será más rápido que usar SSD, pero podría estar equivocado.

AndrejaKo
fuente
2

Para sus cálculos, su procesador es, con mucho, el más importante.

La compilación enfatizará tanto su procesador como la RAM.

Creo que su solución más rentable sería obtener la mejor CPU que pueda pagar, y preferiblemente un núcleo cuádruple. Con la RAM tan barata como es (DDR3 ahora es tan barata como DDR2), puede conectar fácilmente tanta RAM como necesite por poca moneda (16 GB de DDR3 por $ 180 en newegg ... Me doy cuenta de que es excesivo, solo tratando de demostrar lo barato que es). Por lo tanto, invertiría todo lo que pueda en una CPU de calidad como sea posible.

Flynismo
fuente
Gastar más dinero para obtener una CPU más rápida es un buen consejo. Pero no gastar más dinero para obtener más núcleos. GCC realiza toda su compilación en un solo hilo, por lo que nunca usa más de un núcleo.
Isaac Rabinovitch el
1
@Isaac Sí, pero el sistema de compilación generalmente puede generar múltiples trabajos gcc simultáneamente, por ejemplo, makecon la -jopción. Además, creo que llvm puede o podrá compilar un solo archivo usando múltiples hilos.
Ponkadoodle
@Wallacoloo OK, a veces puedes obtener un poco de velocidad extra cuando tienes archivos paralelos en el gráfico de dependencia. Aún así, creo que los núcleos adicionales son un factor bastante menor cuando se trata de acelerar una construcción. Es difícil saberlo, puesto núcleos adicionales son una característica estándar en CPUs más recientes que hacen a acelerar las cosas simplemente al registrar un tiempo más rápido. Si quieres demostrar que estoy equivocado, intenta hacer una gran compilación con y sin -j.
Isaac Rabinovitch
2
@IsaacRabinovitch En realidad, en bases de código grandes, importa mucho . En nuestra base de código, el tiempo de compilación se reduce casi linealmente con distcc( make -j8(localmente) hasta make -j30(distribuido por la red))
Alex
0

Bueno, los gráficos podrían ayudar porque una tarjeta gráfica con una CPU puede reducir la carga en la CPU principal. La potencia de la CPU es probablemente más importante que la RAM, pero cuanto mejores sean los dos, mejor sería.

jer.salamon
fuente
Buen punto: solo si el proceso podría usar núcleos CUDA, que la mayoría no.
NoBugs
0

debido a limitaciones físicas, los núcleos en sí mismos no serán mucho más rápidos en el corto plazo, por lo tanto, a menos que planee pasar a la silicio personalizada, invertir en CPU más rápidas no resolverá su problema a menos que la paralelización realmente haga alguna diferencia, pero de cualquier manera muchos softwares apenas superan los 4 núcleos , Lo sé porque a menudo compilo todo mi sistema y muchas veces voy a ver estadísticas de recursos. Además, incluso si los desarrolladores quisieran aumentar la paralelización, a veces es difícil hacerlo de una buena manera. Invertir en CPU es bueno para aumentar el rendimiento de los servicios o si está haciendo cálculos basados ​​primero en datos; incluso si influirá en el comportamiento de ejecución más adelante; si sus compilaciones siguen algunos de estos patrones, entonces podría ser algo más difícil de discutir, pero esos son algunos casos especiales para el proceso de compilación; Es por eso que, por ejemplo, en la computación gráfica, más núcleos todavía hacen alguna diferencia. Aparte de eso, haga lo que pueda para aumentar la E / S lo más que pueda, puede involucrar discos, carneros y placas base

jeferson lemos
fuente