Parfait. Mais, tant qu'à faire un test de performance, faisons le bien.
Pour des petits échantillons de 175 000 lignes[SUP][1][/SUP] dans chacune des colonnes
A et
C, avec un taux moyen de recouvrement de 50% (
i.e des échantillons donnant environ 50% de « nok »), j'ai obtenu les temps moyens suivant après dix essais :
lætitia90 : 6,72s
ROGER2327 : 5,05s
Nous sommes à peu près d'accord.
Mais en analysant les deux algorithmes, on s'aperçoit qu'ils sont conceptuellement radicalement différents :
À la louche, l'algo-ROGER est en o(n) tandis que l'algo-lætitia est en o(n²).
En clair, un doublement de la taille des échantillons devrait conduire au doublement du temps d'exécution de
l'algo-ROGER (croissance linéaire) et au quadruplement de celui de
l'algo-lætitia (croissance parabolique).
J'ai donc poursuivi avec des échantillons moyens, puis gros, et constaté que l'expérience confirme l'hypothèse :
- vers 500 000 lignes, une minute pour l'algo-lætitia, quinze secondes pour l'algo-ROGER ;
- autour du million de lignes, pas loin de quatre minutes pour l'algo-lætitia, environ trente secondes pour l'algo-ROGER.
Les résultats détaillés sont dans le classeur joint.
Moyennant quoi il est hasardeux de proclamer un « top » sur un essai...