O que é mais importante CPU ou RAM para compilar software grande, por exemplo, bootstrapping gcc?


11

Estou ansioso para comprar um computador novo em breve e quero uma máquina com melhor desempenho para tempos de compilação rápidos.

Por isso, devo me preocupar em obter uma CPU quad-core com a maior GHz possível, ou devo investir em RAM de velocidade mais alta?

Qual é a sua recomendação para que tipo de RAM devo usar?

O desempenho gráfico não importa, compilando cargas de software e executando simulações matemáticas.

Respostas:


8

Eu também não diria. Em vez disso, obtenha um disco rígido SSD rápido . Claro que você precisa de uma CPU adequada e quantidade de RAM também, mas sim ...


2
Bem, eu não tive um SSD, em vez disso, tem 32 GB de RAM e tudo compilação na RAM em tmpfs .... ainda mais rápido do que SSD =)
Dima

11
Bem, esse é o tipo da mesma idéia: p
Svish

2
Discordo. Eu tenho um drive SSD para o meu laptop e isso fez pouca diferença na velocidade de compilação. Por outro lado, adquirir um novo computador com quase o triplo da velocidade da CPU e apenas 4 GB vs 6 GB na máquina SSD tornou a compilação quase três vezes mais rápida. O anandtech.com/show/2829/25 não encontra melhorias visíveis na velocidade do compilador com um SSD, enquanto o blog.hypercomplex.co.uk/index.php/2010/06/… encontra 23% de melhoria. Parece-me lógico que, se você tiver memória suficiente, a compilação envolve muito pouco uso do disco.
Chris Dragão

11
Outro pensamento é que é possível que alguns compiladores usem muitos arquivos temporários para compilar em vez de memória; nesse caso, um SSD ou ramdisk ajudaria mais. No entanto, eu não esperaria que os compiladores modernos fossem projetados dessa maneira agora que a memória é barata e grande e o sistema lida com a paginação no disco quando estiver com pouca carga. Usando o XCode 3.2.6 (baseado no gcc 3 ou 4), o SSD teve pouco benefício.
Chris Dragão

Um SSD faz uma diferença considerável em grandes projetos / soluções que utilizam muito a cópia / movimentação de arquivos. Eu não usei o estilo tmpfs de RAM pessoalmente, mas ouvi coisas boas sobre isso. Para projetos menores, provavelmente está bem. Para os grandes? Pode ser insuficiente.
kayleeFrye_onDeck

4

Provavelmente, a RAM lhe dará um retorno ainda maior. A compilação, especialmente aplicativos grandes, é muito intensiva de E / S e, com mais RAM, você pode economizar mais tempo paginando para e do disco. Atualmente, a maioria das CPUs, especialmente se você usa um quad-core barato, fornecerá bastante energia da CPU para sua compilação, mas ter a RAM ajudará nos dados que vão e voltam.

Pensando bem, isso depende das simulações matemáticas e dos processos de construção. Eles são paralelizáveis? Caso contrário, adicionar mais núcleos não fará nada para acelerar, embora os novos chips Intel (Core i7) sejam bastante rápidos em uma base por núcleo.


11
o que a compilação tem a ver com disco?
Arash 25/09

2

Eu diria para obter cargas e cargas de RAM e usar ramdisks para armazenamento temporário. Isso aumentará drasticamente a velocidade de compilação. Uma CPU multi-core rápida também seria boa, mas acho que você se beneficiaria mais com muita memória RAM. Dê uma olhada neste artigo para algumas idéias. Aqui estão mais algumas informações e mais aqui . Eu acho que o uso da RAM será mais rápido do que o SSD, mas posso estar errado.


2

Para seus cálculos, seu processador é de longe o mais importante.

A compilação enfatizará o processador e a RAM.

Acho que sua solução mais econômica seria obter o melhor CPU possível e, de preferência, um quad core. Com a RAM sendo tão barata quanto é (a DDR3 agora é tão barata quanto a DDR2), você pode facilmente conectar a quantidade de RAM necessária para uma pequena moeda (16 GB de DDR3 por US $ 180 em newegg ... eu sei que isso é um exagero, apenas tentando demonstrar como é barato). Então, eu investia o máximo possível em uma CPU de qualidade possível.


Gastar mais dinheiro para obter uma CPU mais rápida é um bom conselho. Mas não gastando mais dinheiro para obter mais núcleos. O GCC faz toda a sua compilação em um único encadeamento, para nunca usar mais de um núcleo.
Isaac Rabinovitch

11
@Isaac Sim, mas o sistema de compilação geralmente pode gerar vários trabalhos do gcc simultaneamente, por exemplo, makecom a -jopção Além disso, acredito que o llvm pode ou será capaz de compilar um único arquivo usando vários threads.
Ponkadoodle

@Wallacoloo OK, às vezes você pode obter uma velocidade extra quando tiver arquivos paralelos no gráfico de dependência. Ainda assim, acredito que os núcleos extras são um fator bem menor quando se trata de acelerar uma compilação. Difícil dizer, já que os núcleos extras são um recurso padrão em CPUs mais recentes que fazem a acelerar as coisas apenas pelo clock mais rápido. Se você quiser demonstrar que estou errado, tente fazer uma grande compilação com e sem -j.
Isaac Rabinovitch

2
@IsaacRabinovitch Na verdade, em grandes bases de código, importa muito . Em nossa compilação base de código tempo é reduzido quase linearmente com distcc( make -j8(localmente) até make -j30(distribuído através da rede))
Alex

0

Gráficos bons podem ajudar, porque uma placa gráfica com uma CPU pode reduzir a carga na CPU principal. A energia da CPU é provavelmente mais importante que a RAM, mas quanto melhor as duas, melhor.


Bom ponto - somente se o processo puder usar núcleos CUDA, o que a maioria não usa.
NoBugs

0

devido a limitações físicas, os núcleos em si não ficarão muito mais rápidos tão cedo, então, a menos que você planeje mudar para silício personalizado, investir em CPUs mais rápidas não resolverá seu problema, a menos que a paralelização realmente faça alguma diferença, mas de qualquer maneira muitos softwares dificilmente superam 4 núcleos , Eu sei disso porque muitas vezes compilo meu sistema inteiro e muitas vezes vou ver as estatísticas dos recursos. Além disso, mesmo que os desenvolvedores desejassem aumentar a paralelização, às vezes é difícil fazê-lo de uma maneira boa. Investir em CPUs é bom para aumentar o desempenho dos serviços ou se você estiver fazendo cálculos baseados primeiro em dados; mesmo que isso influencie o comportamento de execução posteriormente; se suas compilações seguem alguns desses padrões, pode ser uma coisa mais difícil de discutir, mas esses são alguns casos especiais para o processo de compilação; é por isso que, por exemplo, na computação gráfica, mais núcleos ainda fazem alguma diferença. Além disso, que fazem o possível para aumentar a E / S o máximo possível, pode envolver discos, ram e placas-mãe

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.