Bonjour, j'ai besion de faire un programme qui doit comparer des fichiers.Je sais qu'avec l'invite de commande il y a un instruction comp qui permet de comparer deux fichiers et je voudrais savoir s'il y a une api correspondante. Merci
Bonjour, j'ai besion de faire un programme qui doit comparer des fichiers.Je sais qu'avec l'invite de commande il y a un instruction comp qui permet de comparer deux fichiers et je voudrais savoir s'il y a une api correspondante. Merci
Salut !
A part comparer le temps de deux fichier avec : CompareFileTime,Heu je croi pas que ça éxiste ça
http://msdn.microsoft.com/library/de..._functions.asp
Mais,puisque y a les API pour lire les fichiers,donc je croi que c'est facile de faire un petit algo qui compare de fichier octet par octet .
Bonne chance !
Compare plutôt les fichiers Mo par Mo, voire avec de plus grands blocs : Les accès disque sont plus rapides par grands blocs.
Si j'ai bien compris, tu veux juste dire si deux fichiers de taille égale sont identiques ou non, c'est ça?
Mon conseil pour de bonnes performances:
- Tu alloues deux espaces d'1 Mo de mémoire avec VirtualAlloc() (obligatoire si tu utilises FILE_FLAG_NO_BUFFERING)
- Tu ouvres les fichiers en lecture seule, avec la fonction CreateFile() et le flag FILE_FLAG_NO_BUFFERING ou FILE_FLAG_SEQUENTIAL_SCAN
- Tu lis 1 Mo de chaque fichier
- Tu compares avec memcmp()
- Tu passes au Mo suivant
J'ignore quel mode de lecture sera le plus performant, mais ce sera en tout cas plus rapide que sans aucun flag...
Merci pour les reponses. Finalement j'ai fait une fonction qui lit les fichiers par blocs de 4 octets et les compare.Puis-je espérer gagner du temps en utilisant memcmp ?
pas avec des blocs de 4 octets, en tout cas.
Mais tu peux gagner du temps:
1°) En lisant les fichiers en gros (ou au moins en précisant à Windows que tu les lis de manière séquentielle. On peut le faire aussi avec fopen(), il y a un paramètre à rajouté dans la chaîne)
2°) En comparant en gros avec memcmp(), il y a des chances que le compilateur utilise des instructions spécifiques lorsqu'il s'agit d'opérations d'envergure sur la mémoire.
Partager