# TP2 BDA **Kevin Butikofer, Charles-Lewis Jaggi** **Groupe : L1 GrK** ## Rank languages attempt #1: rankLangs Résultat : List((JavaScript,1692), (C#,706), (Java,586), (CSS,372), (C++,334), (MATLAB,295), (Python,286), (PHP,279), (Perl,144), (Ruby,120), (Haskell,54), (Objective-C,47), (Scala,43), (Clojure,26), (Groovy,23)) Temps : 29296 ms ## Rank languages attempt #2: rankLangsUsingIndex Résulat : List((JavaScript,1692), (C#,706), (Java,586), (CSS,372), (C++,334), (MATLAB,295), (Python,286), (PHP,279), (Perl,144), (Ruby,120), (Haskell,54), (Objective-C,47), (Scala,43), (Clojure,26), (Groovy,23)) Temps : 9983 ms ### Question Can you notice a performance improvement over attempt #1? Why? ### Réponse Le temps d'execution est 3 fois plus rapide que la première méthode. Dans le version 1 on appelle à chaque mapping la fonction **"occurrencesOfLang()"** qui doit remettre en place tout un système de parallelisation donc ca coute des ressources. Dans **"rankLangs"** on parcourt la List des langs qui n'est pas un RDD alors on perd beaucoup de temps. ## Rank languages attempt #3: rankLangsReduceByKey Résultat : List((JavaScript,1692), (C#,706), (Java,586), (CSS,372), (C++,334), (MATLAB,295), (Python,286), (PHP,279), (Perl,144), (Ruby,120), (Haskell,54), (Objective-C,47), (Scala,43), (Clojure,26), (Groovy,23)) Temps : 6790 ms ### Question Can you notice an improvement in performance compared to measuring both the computation of the index and the computation of the ranking as we did in attempt #2? If so, can you think of a reason? ### Réponse Le temps d'éxecution est de presque 5 fois inférieur à la première méthode et presque 1,5 fois comparé à la deuxième méhode. Il y a une seul parralélisation et le reducebyKey combine le groupByKey et le reduce de manière optimisé. Il y aussi moins d'échange de données. ![](https://i.imgur.com/7OQQav5.png)