Comparateur de fichiers

Programmation d'applications complexes
hardy
Messages : 333
Inscription : mer. 02/juin/2004 13:19
Localisation : Tours

Comparateur de fichiers

Message par hardy »

Je propose un concours : écrire un programme (genre windiff) comparant deux fichiers, et affichant toutes les lignes du premier n'apparaissant pas dans le deuxième, et inversement.
Le gagnant serait celui qui ferait le plus rapide. (en excluant l'usage d'assembleur que tous ne connaissent pas. De toute façon, en général, on optimise en assembleur après)
Notez bien que je n'en ai pas programmé, donc je n'ai pas d'avance! :D
Il faudrait, pour permettre la comparaison, que quelqu'un crée deux fichiers accessibles par tous (je ne le fais pas moi-même car les pages perso wanadoo sont encore en travaux...) de la sorte :
On crée un fichier d'une vingtaine de Mo avec des writestring (chaînes aléatoires), et un autre en modifiant l'ordre des lignes, et en modifiant de manière aléatoire un certain nombre d'entre elles. (Disons une cinquantaine de lignes modifiées. Il convient que l'ordre des lignes du premier fichier soit modifié, sinon c'est plus facile)

Qui est partant? Ca serait intéressant de comparer les méthodes, et la vitesse selon la manière dont elles sont mises en oeuvre (type de variables,...)
Qui crée deux fichiers? (en donnant le nombre de lignes apparaissant dans l'un et pas dans l'autre, pour pouvoir vérifier que les programmes marchent)

Et puis il faudra décider du prix accordé au vainqueur!!
Oliv
Messages : 2117
Inscription : mer. 21/janv./2004 18:39

Message par Oliv »

20mo c'est un pue gros quand même :D , et sinon ça peut être sympa mais il faut aussi limitter aux commande de pure :D
hardy
Messages : 333
Inscription : mer. 02/juin/2004 13:19
Localisation : Tours

Message par hardy »

20 Mo c'est raisonnable.

Oui oui, uniquement commandes de pure.

Ce soir j'ai des invités, donc plus de connexion.

J'espère qu'en regardant demain il y aura plein de volontaires :D
Dernière modification par hardy le ven. 07/janv./2005 19:46, modifié 1 fois.
Oliv
Messages : 2117
Inscription : mer. 21/janv./2004 18:39

Message par Oliv »

hardy a écrit :20 Mo c'est raisonnable.

Oui oui, uniquement commandes de pure.
Certains sont en 56k ici, donc déjà tu élimines des participants :wink:
hardy
Messages : 333
Inscription : mer. 02/juin/2004 13:19
Localisation : Tours

Message par hardy »

J'avais pas pensé à ça.
Bon, disons 5Mo.
Il faut quand même que ce soit assez gros pour bien voir les différences.

A demain.
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Message par Le Soldat Inconnu »

suffit de lancer le script 50 fois sur un fichier de 1 mo, et plus de problèmes
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
hardy
Messages : 333
Inscription : mer. 02/juin/2004 13:19
Localisation : Tours

Message par hardy »

Alors, qui s'inscrit?
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

Notez bien que je n'en ai pas programmé, donc je n'ai pas d'avance! Very Happy

MENTEUR !!! :lol: :lol:


t'as deja fait un programe qui compare deux fichiers de registre
et qui affiche les differences !! :lol: :lol:

ha! ha! ha! le renard !! :D
hardy
Messages : 333
Inscription : mer. 02/juin/2004 13:19
Localisation : Tours

Message par hardy »

Gnagnagna...

Les fichiers de sauvegarde produit par regedit sont déjà triés dans l'ordre lexicographique. Dans ce cas là, c'est beaucoup plus simple...

Quelle médisance tout de même :lol: :lol:
filperj
Messages : 395
Inscription : jeu. 22/janv./2004 1:13

Message par filperj »

Je veux bien participer.
Il suffit que le prog affiche les lignes propres à chaque fichier, et les lignes communes d'autre part ?

Où est-ce qu'on posera nos codes ? Ici-même ?

On peut voir une photo de la pin-up qui remettra la coupe au champion ?
Le chaos l'emporte toujours sur l'ordre
parcequ'il est mieux organisé.
(Ly Tin Wheedle)
hardy
Messages : 333
Inscription : mer. 02/juin/2004 13:19
Localisation : Tours

Message par hardy »

Evidemment, on poste les codes. Mais après comparaison des vitesses (sinon, ça va copier :lol: )
Pour comparer, on peut s'échanger les exécutables (car évidement, si les processeurs et les RAM ne sont pas les mêmes...)
Il faut juste afficher les lignes du fichier1 qui n'apparaissent pas dans le fichier2, et inversement. Pas les lignes communes (trop d'affichage, sinon)
Oliv
Messages : 2117
Inscription : mer. 21/janv./2004 18:39

Message par Oliv »

de toute façon comment veux tu voir un temps correct :

Code : Tout sélectionner

a.l = GetTickCount_()
Delay(7)
a = GetTickCount_() - a
Debug a
a = ElapsedMilliseconds()
Delay(22)
a = ElapsedMilliseconds() - a
Debug a
:lol:
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

Message par Anonyme2 »

Il faudrait aussi un standart d'affichage pour que les temps différents ne viennent pas du principe de l'affichage mais bien de la méthode de lecture/comparaison.

En fin de compte, je ne conserverais que le meilleur code :mrgreen:
hardy
Messages : 333
Inscription : mer. 02/juin/2004 13:19
Localisation : Tours

Message par hardy »

@oliv : j'ai déjà signalé le problème (normal ceci-dit) : pour avoir un temps fiable, si ça n'est pas assez long, il faut itérer, simplement.
Les temps deviennent fiables à partir de quelques secondes.

Standard d'affichage : un messagerequester.
Exécution sans debugger.

Ceci-dit, ça n'a pas l'air de s'activer pour faire un tel programme :mrgreen:
Oliv
Messages : 2117
Inscription : mer. 21/janv./2004 18:39

Message par Oliv »

Moi tout de suite j'ai un peu de devoirs à faire :wink: A quand est la date butoire ?
Répondre