Probleme performance, parametrage Tie::File
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 :
Code:
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; |
Il me met moins d'une seconde
- 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