[Perl] Download de gros volume de données

Dominique Asselineau asseline at telecom-paristech.fr
Mer 13 Juil 20:13:42 CEST 2016


Laurent Rosenfeld wrote on Wed, Jul 13, 2016 at 08:01:15PM +0200
> Si tu modifies $| (et lui donne une valeur vraie), tu forces un auto-flush
> après chaque écriture, autrement dit tu empêches la bufferisation des
> sorties et les optimisations que Perl peut faire avec. A priori, je dirais
> qu'il vaut mieux ne pas y toucher et la laisser à 0.

Merci.  Je me doutais de ce comportement.  Merci de me l'avoir
confirmé.  Et je suppose que la taille du buffer n'a pas trop
d'importance dans le cas où $|=0.  On peut même la choisir assez
grande,, de l'ordre de plusieurs dizaines de KO pour éviter les
opérations de lectures nombreuses, sachant qu'en aval, Perl se
débrouillera pour sortir les données efficacement.

Si toutefois il y a une idée plus précise sur la taille du buffer, ça
pourrait améliorer la situation.

Dominique

> 
> 
> 
> Le 13 juillet 2016 à 19:47, Dominique Asselineau <
> asseline at telecom-paristech.fr> a écrit :
> 
> > Laurent Rosenfeld wrote on Wed, Jul 13, 2016 at 07:24:32PM +0200
> > > Bonsoir,
> > >
> > > tu lis tes fichiers ligne par ligne, par blocs d'octets, ou autrement?
> >
> > Je lis les fichiers par bloc, la plupart du temps ce sont des PDF.  Et
> > justement ce serait la taille des blocs que je cherche à régler
> > correctement.  Et puis l'influence de la variable $| devrait être
> > significative ?
> >
> > Dominique
> >
> > >
> > > Dans le cas ligne à ligne, il est probable qu'il soit préférable de
> > laisser
> > > Perl et/ou le système gérer la bufférisation.
> > >
> > >
> > >
> > > Le 13 juillet 2016 à 18:25, Dominique Asselineau <
> > > asseline at telecom-paristech.fr> a écrit :
> > >
> > > > Bonjour,
> > > >
> > > > Je cherche à optimiser la sortie de gros fichiers sur STDOUT dans un
> > > > contexte Internet et j'aurais souhaité m'assurer de la bonne
> > > > procédure et connaître les paramètres appropriés.
> > > >
> > > > Tout d'abord, pour sortir des données, je n'ai remarqué que la fonction
> > > > print et je fais donc des read sur les fichiers à transférer, qui
> > remplit
> > > > un buffer, puis des print de ce buffer.
> > > > Cette méthode marche apparemment bien mais est-ce la plus efficace ?
> > > >
> > > > Si la procédure ci-dessus est bonne,
> > > >  - quel est la bonne taille du buffer ?
> > > >  - a-t-on intérêt à laisser la variable Perl $| à 0 pour laisser Perl
> > > >    optimiser l'affaire ?
> > > >
> > > > À propos de la taille du buffer, c'est probablement une histoire de
> > > > compromis.
> > > > Merci de vos éclaircissements.
> > > >
> > > > Dominique
> > > >
> > > > --
> > > > _______________________________________________
> > > > Perl mailing list
> > > > Perl at mongueurs.net
> > > > http://listes.mongueurs.net/mailman/listinfo/perl
> > > >
> >
> > > _______________________________________________
> > > Perl mailing list
> > > Perl at mongueurs.net
> > > http://listes.mongueurs.net/mailman/listinfo/perl
> >
> >
> > --
> > _______________________________________________
> > Perl mailing list
> > Perl at mongueurs.net
> > http://listes.mongueurs.net/mailman/listinfo/perl
> >

> _______________________________________________
> Perl mailing list
> Perl at mongueurs.net
> http://listes.mongueurs.net/mailman/listinfo/perl


-- 


Plus d'informations sur la liste de diffusion Perl