Page 1 sur 2

Comparateur de fichiers

Publié : ven. 07/janv./2005 19:13
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!!

Publié : ven. 07/janv./2005 19:24
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

Publié : ven. 07/janv./2005 19:43
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

Publié : ven. 07/janv./2005 19:45
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:

Publié : ven. 07/janv./2005 19:47
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.

Publié : ven. 07/janv./2005 22:54
par Le Soldat Inconnu
suffit de lancer le script 50 fois sur un fichier de 1 mo, et plus de problèmes

Publié : sam. 08/janv./2005 10:34
par hardy
Alors, qui s'inscrit?

Publié : sam. 08/janv./2005 11:11
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

Publié : sam. 08/janv./2005 14:57
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:

Publié : dim. 09/janv./2005 22:22
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 ?

Publié : dim. 09/janv./2005 22:42
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)

Publié : lun. 10/janv./2005 16:24
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:

Publié : lun. 10/janv./2005 17:08
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:

Publié : lun. 10/janv./2005 19:51
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:

Publié : lun. 10/janv./2005 20:19
par Oliv
Moi tout de suite j'ai un peu de devoirs à faire :wink: A quand est la date butoire ?