JavaScript un langage adapté pour le Big Data (partie 2) : tests comparatifs
par
, 07/04/2016 à 19h36 (1153 Affichages)
Ce billet fait écho à une réponse à l'actualité pourquoi JavaScript est adapté au Big Data.
Un internaute me faisait remarquer que selon lui, un langage adapté au Big Data pourrait faire la moyenne d'un tableau de 10 millions de floaten moins de 2 secondes, alors que JavaScript moulinerait bien plus longtemps.
J'ai donc décidé de faire le test. Je n'ai pas fait le test sur des floatmais sur des double car en JavaScript, les numériques sont codés sur 8 octets et non sur 4. Mais comme on dit qui peut le plus peut le moins.
Afin d’être certain de trouver des nombres composés de nombreux chiffres après la virgule. Je propose que chaque élément du tableau vaille : 1023 * index / 23
Je m'offre le luxe de faire la mesure de l'opération de remplissage du tableau et du calcul de la moyenne.
Je fais également le test en Java pour faire une comparaison. Les 2 tests sont réalisés sur un vieux céléron avec 2 Go de Ram.
Voici le code source des exécutables
Code java : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 public static void main(String[] args) { int maxLength = 10000000; long start = System.currentTimeMillis(); double array[] = new double[maxLength]; double somme = 0; double moyenne = 0; for (int i = 0; i < maxLength; i++) array[i] = 1023*(double)i/23; for (int i = 0; i < maxLength; i++) somme += array[i]; moyenne = somme/array.length; long stop = System.currentTimeMillis(); long lasting = stop-start; System.out.println(moyenne); System.out.println("temps d'execution = " + lasting + " ms"); }Aux résultats on obtient une exécution du code java en 127 ms et en JavaScript en 262 ms.
Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 var maxLength = 10000000; var array = []; var somme = 0; var moyenne = 0; var start = Date.now(); for (var i = 0; i < maxLength; i++) array.push(1023*i/23); for (var i = 0; i < maxLength; i++) somme += array[i]; moyenne = somme/array.length; var stop = Date.now(); var lasting = stop - start; console.log(moyenne); console.log("temps d'execution = " + lasting + " ms");
Bien évidemment le résultat (la moyenne des 10 millions de double) est le même pour les 2 langages et vaut 222391282.10869563
On remarque que pour ce calcul, Java est 2 fois plus rapide que JavaScript. Mais on remarque que JavaScript est au minimum 8 fois plus rapide que ce que l'on pourrait attendre d'un mauvais langage (bien plus de 2 secondes).
Donc pour le moment je persiste à dire que JavaScript même pour du back est sans doute un langage éligible au Big Data.
Si quelqu'un se propose de faire subir un bench mark plus révélateur je serais heureux d'en être un élément proactif.