O código é exatamente o mesmo - copiei de um computador para outro. O código é compilado com g ++ - 4 (4.9.1) obtido do fink no OSX em ambas as máquinas, e não é executado em paralelo.
As opções do compilador são "-O2" e os computadores basicamente não fazem mais nada (baixo uso de CPU e memória). Código é um código de pesquisa de 2400 linhas ligação .
Máquina 1:
- MacBook Pro Retina do final de 2013,
- 2,8 GHz i7-4558U,
- 16 GB 1600 MHz DDR3,
- Armazenamento Flash de 500 GB
Máquina 2:
- Macinter Workstation do final de 2013,
- 3.5GHz de 6 núcleos Intel Xeon E5-1650,
- 32 GB 1867 MHz DDR3
- 251 GB de armazenamento Flash,
- Unidade SATA externa de 3 TB
Tempo de execução:
Máquina 1: com saída de 200 seg., Sem 18 seg.
Máquina 2: (/ diretório - deve ser flash drive): com 2230 seg., Sem 2075 seg.
Máquina 2: (~ diretório - deve ser drive externo): com 2262 seg., Sem 2080 seg.
Alguma idéia de como melhorar o tempo de execução no Mac Pro?
macos
performance
c++
g++
Stershic
fonte
fonte
Respostas:
A maneira correta de abordar a questão "por que esse código demora tanto para ser executada", seja "longo" seja em termos absolutos ou relativos, é usar uma ferramenta chamada perfil.
Basicamente, você executa o programa através do profiler ou com o profiler anexado, e o profiler registra quanto tempo o programa gasta em várias funções. Esta informação é então apresentada a você de uma forma que lhe permite identificar as partes do programa que demoraram mais para serem executadas durante essa execução. Muitas vezes também será possível obter informações adicionais a partir desse relatório, como quais partes do programa são chamadas o maior número de vezes, e coisas assim, que também podem apontar para áreas que poderiam usar algum escrutínio.
Com base nesses dados, geralmente é fácil dizer quais partes precisam ser otimizadas, de modo que o programa seja executado mais rapidamente, sem empregar o jogo de adivinhação conhecido como "otimização prematura" ou confiar nos detalhes de alguma peça específica de hardware.
fonte
Este é um palpite especulativo, mas seu código funciona com o disco e o disco de E / S, e vou assumir que esse é o seu gargalo - você mencionou que ele roda mais rápido na máquina com armazenamento flash de 500 GB do que com 250 GB flash storage - isso faz sentido, logicamente, devido à forma como o armazenamento flash é essencialmente um RAID 0 de chips de armazenamento flash menores (32 / 64GB) e mais chips / discos em uma array RAID-0 aumentará muito o desempenho. Não conheço a marca / modelo / firmware / controlador específico do armazenamento, mas suspeito que, se você fizesse um teste de E / S de disco, encontraria uma discrepância semelhante no desempenho das duas máquinas. Tal teste de desempenho pode melhor ser feito usando XBench .
fonte