One Billion Row Challenge (simplifié)

Michel SIMATIC

17 avril 2026

1 Introduction

Le but de cet exercice est de manipuler en C++ des vecteurs, des arbres binaires de recherche et des hash map en s’inspirant du One Billion Row Challenge. Comme expliqué dans l’un des projets C de l’UE CSC4103, ce challenge de programmation consiste à traiter le plus rapidement possible un fichier contenant une grande quantité de données, chaque ligne contenant un nom de ville et une température :

Riga;0.3
Skopje;6.8
Tokyo;22.1
Riga;-3.3
Riga;7.1

En sortie, le programme doit afficher la liste des villes, triées alphabétiquement, et la température minimum, maximum, et moyenne de chaque ville au format JSON :

[
{"city": "Riga", "min": -3.3, "max": 7.1, "mean": 1.4},
{"city": "Skopje", "min": 6.8, "max": 6.8, "mean": 6.8},
{"city": "Tokyo", "min": 22.1, "max": 22.1, "mean": 22.1}
]

2 Analyse des données avec un vecteur (0h20)

Cliquez pour de l'aide
const vector<data_t> data{{"Riga",0.3},{"Skopje",6.8},{"Tokyo",22.1},{"Riga",-3.3},{"Riga",7.1}};

3 Analyse des données avec un arbre binaire de recherche (0h15)

4 Analyse des données avec une table de hash (0h15)

5 Conclusion

Corrigé (à exploiter selon la procédure Construire un projet C++ avec cmake).

Cet exercice vous a permis de manipuler trois conteneurs C++, sans vous intéresser aux performances obtenues. L’étude de ces performances (qui est au cœur du One Billion Row Challenge) sera probablement approfondie dans un exercice lors du cours JIN Sensibilisation à la programmation concurrente (multitâche) à travers C++ de 3ème année. Toutefois, vous pouvez déjà faire des mesures avec le TP optionnel Quelques manipulations sur les vecteurs.