lundi 4 février 2019

R et Python, performances comparées

Lancer un débat sur les mérites des différents langages de programmation est une bonne manière de plomber un repas entre informaticiens. J'en avais fait les frais naguère lorsque j'avais voulu comparer les performances de plusieurs d'entre eux (Java, C++, C#, Delphi - alors que j'en étais arrivé à la conclusion finalement que le meilleur outil était celui dont on maîtrisait le mieux les contours, et que la structuration des données jouait un rôle fondamental).

J'imagine qu'on se heurterait à la même fronde de la part de certains (une moitié vs. l'autre ?) data scientists si l'on se mettait à opposer R et Python. L'année dernière, à la même époque, j'avais essayé de montrer qu'on pouvait enseigner les deux dans les formations en data science, et que le passage d'un outil à l'autre engendrait un surcoût pédagogique négligeable au regard des avantages, notamment en termes de positionnement de nos étudiants sur le marché du travail. Je m'attache à appliquer ce principe dans mes enseignements à l'Université.

Malgré tout, je me risque à un petit comparatif dans ce tutoriel. Parce que j'entends beaucoup d'affirmations ici et là qui ne sont pas vraiment argumentées. J'ai décidé de vérifier par moi-même en observant les performances des outils dans un cadre précis, bien délimité : chargement d'un fichier CSV volumineux (9.796.862 observations et 42 variables – il s'agit de la base KDD CUP 99 dont chaque ligne a été dupliquée), réalisation de calculs de statistique descriptives simples (moyennes, croisements, tris).

Tous les outils testés ont mené à bien les opérations, c'est une information primordiale. Après, nous avons des résultats – spécifiques à l'expérience menée, je souligne encore une fois – qui titillent quand même pas mal notre intellect. Je vous laisse les découvrir.

Bien sûr, les temps de traitement annoncés dans ce tutoriel sont propres à ma machine fixe (Core i7 - 3.1 Ghz). J'ai refait les tests sur mon ordinateur portable (Core i5 - 2.7 Ghz), les valeurs sont différentes dans l'absolu (le contraire eût été étonnant), mais les positions et écarts relatifs restent identiques. J'imagine qu'il en sera de même sur votre ordinateur.

Enfin, à l'attention des ronchons pro-ci ou pro-ça dont j'entends déjà les grognements, je leur dis de monter leurs propres expérimentations, et surtout de bien veiller à mettre en ligne leurs codes et leurs données pour que tout un chacun puisse retracer ce qui est annoncé. S'assurer de la reproductibilité des résultats est la base même de la démarche scientifique.

Mots-clés : logiciel R, fichier CSV, kdd cup 99, package data.table, packager readr, package dplyr, python, package pandas, statistique descriptive
Didacticiel : R et Python, performances
Programmes : Chargement et statistiques (R et Python)
Données : kddcup99twice.7z
Références :
Tutoriel Tanagra, "R ou Python, il faut choisir ?", Janvier 2018.