Ich habe bemerkt, dass es länger dauert, in C++ auf die Konsole zu drucken als in Javascript, aber ich hätte das Gegenteil erwartet. Ich habe diese beiden fizzbuzz Tests in JS und C++:Warum ist es schneller, an die JavaScript-Konsole zu drucken als an die C++ - Konsole zu drucken?
JS
window.onload = function()
{
console.time("test");
for(var i = 0; i < 10001; i++)
{
if(i % 3 == 0 && i % 5 == 0)
{
console.log(i + " -- fizzbuzz \n");
}
else if(i % 3 == 0)
{
console.log(i + " -- fizz \n");
}
else if(i % 5 == 0)
{
console.log(i + " -- buzz \n");
}
}
console.timeEnd("test");
}
C++
#include "stdafx.h"
#include <cstdio>
#include <ctime>
int main()
{
std::clock_t start;
double duration;
start = std::clock();
for (int i = 0; i < 10001; i++)
{
if (i % 3 == 0 && i % 5 == 0)
{
printf("%d -- fizzbuzz \n", i);
}
else if (i % 3 == 0)
{
printf("%d -- fizz \n", i);
}
else if (i % 5 == 0)
{
printf("%d buzz \n", i);
}
}
duration = ((std::clock() - start)/(double)CLOCKS_PER_SEC);
printf("duration: %f \n", duration);
std::getchar();
return 0;
}
Ergebnisse
JS
012.351.492.54ms 498.77ms 502.36ms
C++
2017ms 2149ms 2357ms
Kann mir jemand erklären, warum eine kompilierte Sprache wie C++ funktionieren würde ~ 4 mal langsamer als eine interpretierte, schwach typisierten Sprache wie Javascript? Mir ist klar, dass es wahrscheinlich ein Problem mit der Durchführung des Tests gibt, aber ich bin nur neugierig auf das Problem.
Wie kompilieren Sie? Stellen Sie sicher, dass Optimierungen aktiviert sind. –
offensichtliche Frage, haben Sie mit aktivierten Optimierungen kompiliert? – vu1p3n0x
Um fair zu sein, haben Sie eine weitere Iteration in der C++ - Fall als in der Javascript-Fall. –