xXG4briel / loop-to-billion

Project that iterates from 0 to 1 billion in 10 different languages.
12 stars 3 forks source link

Relógio externo #4

Open ArthurLobopro opened 10 months ago

ArthurLobopro commented 10 months ago

Vi seu post no LinkedIn e achei estranho Javascript ter um resultado superior ao C++, então gostaria de fazer uma sugestão.

Ao invés de fazer a linguagem fazer a cronometragem, use um comando como esse do Linux para cronometrar.

image

Assim algumas linguagens que não se dão bem com timers podem ter uma comparação mais justa em termos de performance.

AlbertoMonteiro commented 10 months ago

@ArthurLobopro o fato da linguagem Java ter o tempo melhor que C++ aqui, é por que existe uma otimização da JVM que quando detecta que tem loops sem necessidade, que é o caso desse teste cujo é um loop vazio, a JVM elimina a execução daquela parte, portanto a JVM só executa o loop algumas vezes e ai entende que não precisa mais repetir.

A proposito, você chegou a fazer o teste você mesmo com Java?

ArthurLobopro commented 10 months ago

@AlbertoMonteiro eu não fiz nenhum teste, mas eu achei estranho o JavaScript com o node ter um desempenho melhor, já que C++ é uma linguagem compilada e JavaScript é interpretada, e o node runtime também é feito em C++ e por isso é estranho o JavaScript ter uma performance superior

AlbertoMonteiro commented 10 months ago

Existem outras variantes que são importantes para se analisar, como por exemplo essa que mencionei.

Por exemplo, C# tem opção de gerar código nativo, sem JIT, e para algumas questões, a versão dele que tem JIT, é melhor, pq a geração de código durante a execução pode usar informações para gerar um código de máquina melhor que o gerador genérico.

Então na da para se basear somente nesse linha de ser ou não compilado.