Divers utilisateurs de C qui ont appris le C préfèrent continuer à utiliser la famille de fonctions printf / scanf même pendant le codage en C, en raison de son interface accessible et capacités de localisation. Cependant, des problèmes de performances peuvent survenir lors de la comparaison avec ifstream de C. On observe notamment que fscanf surpasse systématiquement ifstream.
Pour améliorer les performances d'IOStreams, envisagez les techniques suivantes :
L'augmentation de la taille du tampon réduit les accès au disque dur et les appels système, améliorant ainsi les performances. Définissez le tampon en accédant à l'implémentation streambuf à l'aide de pubsetbuf().
char Buffer[N]; std::ifstream file("file.txt"); file.rdbuf()->pubsetbuf(Buffer, N);
Les paramètres régionaux peuvent avoir un impact sur les performances en raison de la conversion de caractères et des appels système complexes. Choisissez les paramètres régionaux C par défaut, optimisés pour une conversion et une uniformité minimales entre les machines, pour éviter cette surcharge.
Ce paramètre n'a pas présenté d'améliorations notables des performances lors de nos tests. .
Nos benchmarks utilisant un programme de test simple révèlent des résultats variables selon les différentes plates-formes et compilateurs. Le résultat suggère que les performances d'IOStreams dépendent de l'implémentation.
Voici les résultats de divers benchmarks :
g 4.7.2-2ubuntu1, -O3, Ubuntu 11.10 x86_64
g 4.4.5, -O3, Ubuntu Linux 10.10 x86_64
g i686-apple-darwin10-g -4.2.1 (GCC) 4.2.1, mac mini, 4 Go de RAM
clang 3.8.0-2ubuntu4, Kubuntu 16.04 Linux 4.8-rc3
Ces résultats soulignent l'importance de la qualité de la mise en œuvre dans l'optimisation des performances d'IOStreams.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!