Je cherche à appliquer une recherche KMP (ou similaire) à un gros fichier (> 4 Go).Quelle est la meilleure façon de faire une recherche dans un fichier volumineux?
Je m'attends à ce que cela me pose problème. Je ne peux pas tout copier en mémoire car il n'y a pas assez d'espace là-bas.
Ma question est, quelle est la meilleure façon de faire cette recherche? Devrais-je simplement créer un FICHIER * et faire la recherche directement dans le fichier, devrais-je copier des blocs (disons 4k) en mémoire et les chercher, ou quelque chose d'autre complètement?
+1 pour l'utilisation de mmap. Il faut juste noter que vous aurez toujours besoin de mmap dans les blocs, sur les machines 32 bits, car l'espace d'adressage ne suffit pas. – tsg
Oui, mmap (au moins sur OSX, mais c'est BSD stardard) accepte size_t len et off_t offset. L'OP doit vérifier si ces types contiennent des valeurs de 64 bits, sinon il ne pourra jamais dépasser la limite de 4 Gio. –