Sinon, effectivement, la parallélisation est une bonne option, il faut commencer par mettre en mémoire (= en cache) le fichier d'origine X, et lancer un thread par coeur sur la comparaison avec les autres fichiers (un thread se chargeant de la répartition). Les données du fichier X doivent bien sûr être considérées comme étant en lecture seule.
Ensuite, chaque thread de travail va lire le fichier qu'il doit comparer, effectuer ladite comparaison, puis retourner un résultat.
Le thread de répartition, lui, peut être le thread principal. Il va faire la liste des fichiers à comparer pour commencer, charger le fichier de référence X, puis créer (et alimenter !) les threads de calcul tout en récupérant / concaténant les résultats.
Partager