printf() fait elle perdre du temps ?? - C - Programmation
Marsh Posté le 30-11-2006 à 16:24:17
Rien n'est gratuit, mais après pour savoir si c'est significatif le seul moyen c'est de tester.
Marsh Posté le 30-11-2006 à 16:28:47
ça dépend de la fréquence de rafraichissement. Si tu raffraichis 1 million de fois en 1s, alors oui ça a un impact.
Marsh Posté le 30-11-2006 à 16:39:46
in_your_phion a écrit : j'ai un programme où dans une boucle j'affichage le pourcentage écoulé. J'aimerais savoir si ca fait "perdre" du temps au calcul, en d'autres termes est ce que ça irait (significativement) plus vite sans affichage. |
Bien sûr que l'affichage a un cout. L'astuce algorithmique de base, c'est de ne changer l'affichage que si la donnée a changé...
EDIT : ajouté compteur de printf()...
Code :
|
|
Marsh Posté le 30-11-2006 à 16:49:25
Le temps que fait perdre printf dépend surtout des capacités du device qui affiche les données, pas de printf lui-même. Quand tu profiles un programme qui ne fait que des printf en boucle, tu te rends compte qu'en fait le programme passe 99% du temps à dormir en attente d'io.
Marsh Posté le 30-11-2006 à 17:42:05
+1 c'est surtout les IO qui sont longs
sprintf est très rapide par rapport à printf, à afficahge égal.
De plus l'affichage en mode texte est + long que celui en mode graphique (avec des SetText(HWND..))
Ca parait étrange mais l'affichage graphique est très optimisé au contraire de l'affichage texte, même dans une console fenétrée.
Je dis ça pour windows, sous linux c'est peut-être plus rapide
Marsh Posté le 01-12-2006 à 18:06:57
merci pour vos réponses en effet, dans ma fonction printf() ralenti le temps de calcul car il affiche les pourcentages tout les 1%, sur ce je vais le changer en 5% ...
Marsh Posté le 01-12-2006 à 19:03:16
...
t'as rien compris ...
si tu progresses de 1% par seconde, printf ne ralentit en rien ton calcul
Marsh Posté le 01-12-2006 à 19:17:12
Truc con : tu fais une boucle avec (tu affiches la valeur de l'indice) et sans printf .... celle sans est bien plus rapide
Marsh Posté le 01-12-2006 à 19:22:25
in_your_phion a écrit : merci pour vos réponses en effet, dans ma fonction printf() ralenti le temps de calcul car il affiche les pourcentages tout les 1%, sur ce je vais le changer en 5% ... |
Ben non. J'ai même fourni un code qui explique le phénomène. C'est pas 100 printf() qui vont te ralentir...
Marsh Posté le 08-12-2006 à 15:39:42
Emmanuel Delahaye a écrit : Ben non. J'ai même fourni un code qui explique le phénomène. C'est pas 100 printf() qui vont te ralentir... |
printf ralenti si la fréquence de raffraichissement du terminal est plus faible que celle des printf...c'est ca ??
Marsh Posté le 08-12-2006 à 15:56:40
in_your_phion a écrit : printf ralenti si la fréquence de raffraichissement du terminal est plus faible que celle des printf...c'est ca ?? |
Voila.
Si tu veux voir l'effet que ça fait, il te suffit d'utiliser l'un des nouveaux guichets électroniques de la SNCF (les bornes jaunes et violettes, pas les bornes transilien). Lors de la saisie du code de la carte bancaire, on peut voir que l'affichage est tellement rafraîchi que rentrer ledit code est un calvaire. C'est éducatif pour nous, développeurs.
Marsh Posté le 08-12-2006 à 16:12:18
Elmoricq a écrit : Voila. |
ok, merci ' sont fortiches à la Sncf, mais en même temps ils le valent bien
(donc j'avais bien compris soit-dit en passant ... )
Marsh Posté le 08-12-2006 à 22:17:00
Au pire, tu peux écrire dans un fichier. C'est largement plus rapide qu'à l'écran.
Marsh Posté le 30-11-2006 à 16:09:04
Bonjour,
j'ai un programme où dans une boucle j'affichage le pourcentage écoulé. J'aimerais savoir si ca fait "perdre" du temps au calcul, en d'autres termes est ce que ça irait (significativement) plus vite sans affichage.
merci