J'ai lu / écrit un fichier CSV d'environ 1 Go dans plusieurs langages de programmation et je l'ai chronométré!
Langue | Durée moyenne d'exécution 5 fois(Secondes) |
---|---|
C-lang | 6.2962 |
C++ | 6.0538 |
C# | 17.1798 |
Golang | 10.3966 |
Java | 21.0840 |
Python | 32.6949 |
Ruby | 30.7153 |
Scala | 21.8364 |
Après tout, C / C ++ est de loin le plus rapide! !! Passez à la langue à la deuxième place
J'ai écrit C ++ pour la première fois en 5 ans, donc je ne pense pas que ce soit beau, mais comme c'était le plus rapide, je le posterai comme échantillon.
Je l'ai implémenté dans d'autres langues en fonction du comportement suivant.
--Calculer le temps moyen exécuté 5 fois --Lisez une ligne et écrivez une ligne
#include <iostream>
#include <fstream>
#include <time.h>
#include <iomanip>
using namespace std;
int main(int argc, char *argv[])
{
cout << "START!!!" << endl;
clock_t start, end;
double time, sum = 0;
int count = 5;
for (int i = 0; i < count; i++)
{
start = clock();
ifstream ifs("/fixtures/sample.csv");
ofstream ofs("./sample.csv");
const int SIZE = 1024;
char buffer[SIZE];
while (ifs.getline(buffer, SIZE))
{
// ofs << buffer << endl;C'est vraiment lent
ofs << buffer << "\n";
}
end = clock();
time = (double)(end - start) / CLOCKS_PER_SEC;
cout << "Time Result: ";
cout << fixed << setprecision(4) << time << endl;
sum += time;
}
cout << "C++ Average: ";
cout << fixed << setprecision(4) << sum / count << endl;
return 0;
}
Comme mentionné dans les commentaires dans la source, en C ++, écrire avec ʻofs << buffer << endl; `pose un problème en ce que la vitesse diminue considérablement, j'ai donc ajouté moi-même le code de saut de ligne.
Comme prévu, le résultat était C / C ++. Puisque Ruby et Python sont des langages de script, je pensais que ce serait lent, mais c'était encore lent. (Peut-être que c'est une question d'écriture) Le langage Go était si rapide que je ne l'avais jamais utilisé au travail, mais cela m'intéressait beaucoup!
En fait, je voulais faire Rust, mais je l'ai implémenté à mi-chemin en raison d'un manque de connaissances et j'étais frustré, donc je l'ai exclu cette fois. Rust Nous attendons toujours les relations publiques de vos proches!
Aussi, s'il y a une manière d'écrire qui peut se faire plus vite que ma mise en œuvre et que le résultat sera différent de ce classement, j'attends PR! (J'apprécierais que le concept de base reste le même)
https://github.com/MasanoriIwakura/multi-lang-battle
Recommended Posts