Fabien LE LEZ a écrit :
> On Mon, 5 May 2008 02:42:08 -0700 (PDT), James Kanze
> <james.kanze@gmail.com>:
>
>> Selon les implémentations, il peut y avoir plus ou moins de
>> différences de performances entre iostream et FILE*. En général,
>> en faveur des FILE* (mais ce n'est pas forcement universel).
>
> Ce que je ne comprends pas, c'est pourquoi mon implémentation
> (bricolée en quelques minutes) est très largement plus rapide que
> "operator >> (istream&, double&)".
> D'autant que je commence par lire une ligne dans un string avec
> getline(), puis je parse cette chaîne (en faisant les vérifications
> qui vont bien), alors que operator>> ne passe pas par cette étape
> intermédiaire.
Peut être l'indirection causée par le codecvt. Ton code ne prends pas en
compte la localisation bien que ça n'explique pas un facteur 4.
> Comme je ne pense pas être meilleur que les auteurs de g++ dans leur
> propre domaine, je me doute qu'il y a une explication quelque part,
> mais je ne vois pas où. Et on ne parle pas ici de quelques % de
> différence, mais bien d'un facteur 4 (grosso modo).
Ou peut être il n'y a pas eu d'effort de la part des auteurs de g++ pour
optimiser iostream.
D'après B.Stroustrup, iostream est plus rapide (en théorie)
http://www.research.att.com/~bs/new_learning.pdf.
Michael