Salut,
J'ai une question à propos d'une modification de données dans un fichier via l'utilisation du module Tie::File et d'un parcours ligne à ligne.
1 cas : Je travaille sur un fichier (importe l'extension) faisant 1,52 Mo
- En utilisant le module Tie et en faisant à peu pres ça :
Il me met moins d'une seconde
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 tie my @lignes_fichier, 'Tie::File', $file or croak("impossible d'ouvrir le fichier $file\n"); foreach my $ligne (@lignes_fichier) { $ligne =~ s{$old_motif}{$new_motif}g; } untie @lignes_fichier;
- En utilisant une configuration ligne à ligne en passant par un fichier temporaire via File::Temp et File::Copy pour recopier:
il met 12 secondes
N'est pas déjà trop long? y a t il plus simple à faire pour que ce soit plus rapide?
Sinon tie est sans conteste plus performant dans ce cas
2 cas : Je travaille sur un fichier (importe l'extension) faisant 37 Mo
- via Tie, il met 12 min environ
-via ligne à ligne + File::Temp + File::Copy => 3min 30 sec environ
Je trouve que 32Mo c'est vraiment petit et ne comprends pourquoi c'est si long.
Comment optimiser cela? De plus Tie est normalement bien fait pour gerer les gros fichiers, comment l'utiliser au mieux dans ce cas?
NB: Mon PC a 1 Go de ram
Merci
Partager