Pouvoir lire 'en dur' dans un fichier ? (je sais ce n'est pas clair)

Le
ctobini
Bonjour,

C'est une question gnrale car je ne sais pas du tout si ce dont je
vais parler est possible.

Je charge gnralement de volumineux fichiers en mmoire lorsque je
dois en extraire des donnes de manire non squentielle, ce qui
pourrit considrablement les performances de ma machine qui swappe
lors des calculs puisque tout mon fichier est en mmoire, alors que je
n'en ai plus besoin.

Est-il possible de lire 'en dur' dans un fichiers, c'est dire
d'avoir un moyen de 'baliser' un fichier afin d'avoir un accs disque
pour y lire les donnes au lieu de tout stocker en mmoire ?

En vous remerciant,

C. Tobini
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Michel Rodriguez
Le #130502
ctobini wrote:

Je charge généralement de volumineux fichiers en mémoire lorsque je
dois en extraire des données de manière non séquentielle, ce qui
pourrit considérablement les performances de ma machine qui swappe
lors des calculs puisque tout mon fichier est en mémoire, alors que je
n'en ai plus besoin.

Est-il possible de lire 'en dur' dans un fichiers, c'est à dire
d'avoir un moyen de 'baliser' un fichier afin d'avoir un accès disque
pour y lire les données au lieu de tout stocker en mémoire ?


Si tu as repere l'endroit ou lire, tu peux utiliser seek pour y
retourner plus tard.

perldoc -f seek

--
mirod

Emmanuel Florac
Le #130397
Le Tue, 26 Sep 2006 06:23:55 -0700, ctobini a écrit :


Est-il possible de lire 'en dur' dans un fichiers, c'est à dire d'avoir
un moyen de 'baliser' un fichier afin d'avoir un accès disque pour y lire
les données au lieu de tout stocker en mémoire ?


Par défaut Perl peut lire un fichier ligne par ligne, comme ceci :

open my $fh, "/un/fichier";

while ( <$fh> ) {
# Là j'ai lu une ligne et je peux la traiter
}

Le séparateur de ligne est n par défaut sous Unix, rn sous
VMS/DOS/Windows.
Mais si ton fichier contient déjà des séparateurs d'enregistrements
autres que n, tu peux redéfinir quel caractère utiliser pour définir
ce qu'est une ligne avec la variable spéciale $/.
Sinon comme dit précédemment, tu peux utiliser aussi seek...

--
on passe la moitié de son temps à refaire ce que l'on n'a pas eu le
temps de faire correctement.
Loi de Myers.

Paul Gaborit
Le #130395
À (at) 26 Sep 2006 06:23:55 -0700,
"ctobini"
Je charge généralement de volumineux fichiers en mémoire lorsque je
dois en extraire des données de manière non séquentielle, ce qui
pourrit considérablement les performances de ma machine qui swappe
lors des calculs puisque tout mon fichier est en mémoire, alors que je
n'en ai plus besoin.

Est-il possible de lire 'en dur' dans un fichiers, c'est à dire
d'avoir un moyen de 'baliser' un fichier afin d'avoir un accès disque
pour y lire les données au lieu de tout stocker en mémoire ?


Question classique. Réponse dans la FAQ. En français :


La solution en résumé... utiliser le module Tie::File !

--
Paul Gaborit - Perl en français -
Publicité
Poster une réponse
Anonyme