Voila j'ai un programme dont une partie du code consiste a ouvrir un fichier
(fonction fopen()) et a recuperer le contenue de celui-ci (fonction getc()).
Je fait cela a l'aide d'une boucle (while) car apres je fait une operation
sur chaque bit du fichier.
Ma question est la suivante: Est-ce que si au lieu d'utiliser la fonction
getc(), j'utilise fread() et que je ne lit pas le fichier bit par bit mais
par bloques de 10000 par exemple et que je stocks ce(s) bloque(s) dans un
tableau afin de manipuler bit par bit celui-ci, est-ce que cela vaut le cout
pour ameliorer la vitesse d'execution, ou cela n'en vaut pas la peine.
Je tiens a preciser que ce code est executer a l'aide d'un Thread
independant meme si cela n'a pas grand importance dans mon probleme.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Samuel Krempp
le Sunday 29 August 2004 11:55, écrivit :
Bonjour a tous,
Voila j'ai un programme dont une partie du code consiste a ouvrir un fichier (fonction fopen()) et a recuperer le contenue de celui-ci (fonction getc()). Je fait cela a l'aide d'une boucle (while) car apres je fait une operation sur chaque bit du fichier. Ma question est la suivante: Est-ce que si au lieu d'utiliser la fonction getc(), j'utilise fread() et que je ne lit pas le fichier bit par bit mais par bloques de 10000 par exemple et que je stocks ce(s) bloque(s) dans un tableau afin de manipuler bit par bit celui-ci, est-ce que cela vaut le cout pour ameliorer la vitesse d'execution, ou cela n'en vaut pas la peine. Je tiens a preciser que ce code est executer a l'aide d'un Thread independant meme si cela n'a pas grand importance dans mon probleme.
Autant poser ta question dans fr.comp.lang.c, un programmeur C a plus de chance de connaître les détails des performances des I/O C qu'un programmeur C++.
personnellement je pense que si le temps pris par les mécanismes d'appels de la fonction getc est négligeable par rapport aux traitements que tu fais dans ta boucle, il n'y a pas grand chose à gagner à les remplacer par fread vers buffer. manipuler les bits, je pense que c'est probablement suffisamment lent pour que l'appel à getc soit négligeable.
A ce qu'il me semble, la lecture du fichier se fait par bloc dans un buffer de toute façon (à priori, et si le fichier est ouvert comme celà), fgetc se contente de regarder dans le buffer.
-- Sam
le Sunday 29 August 2004 11:55, yu@yu.com écrivit :
Bonjour a tous,
Voila j'ai un programme dont une partie du code consiste a ouvrir un
fichier (fonction fopen()) et a recuperer le contenue de celui-ci
(fonction getc()). Je fait cela a l'aide d'une boucle (while) car apres je
fait une operation sur chaque bit du fichier.
Ma question est la suivante: Est-ce que si au lieu d'utiliser la fonction
getc(), j'utilise fread() et que je ne lit pas le fichier bit par bit mais
par bloques de 10000 par exemple et que je stocks ce(s) bloque(s) dans un
tableau afin de manipuler bit par bit celui-ci, est-ce que cela vaut le
cout pour ameliorer la vitesse d'execution, ou cela n'en vaut pas la
peine. Je tiens a preciser que ce code est executer a l'aide d'un Thread
independant meme si cela n'a pas grand importance dans mon probleme.
Autant poser ta question dans fr.comp.lang.c, un programmeur C a plus de
chance de connaître les détails des performances des I/O C qu'un
programmeur C++.
personnellement je pense que si le temps pris par les mécanismes d'appels de
la fonction getc est négligeable par rapport aux traitements que tu fais
dans ta boucle, il n'y a pas grand chose à gagner à les remplacer par fread
vers buffer. manipuler les bits, je pense que c'est probablement
suffisamment lent pour que l'appel à getc soit négligeable.
A ce qu'il me semble, la lecture du fichier se fait par bloc dans un buffer
de toute façon (à priori, et si le fichier est ouvert comme celà), fgetc se
contente de regarder dans le buffer.
Voila j'ai un programme dont une partie du code consiste a ouvrir un fichier (fonction fopen()) et a recuperer le contenue de celui-ci (fonction getc()). Je fait cela a l'aide d'une boucle (while) car apres je fait une operation sur chaque bit du fichier. Ma question est la suivante: Est-ce que si au lieu d'utiliser la fonction getc(), j'utilise fread() et que je ne lit pas le fichier bit par bit mais par bloques de 10000 par exemple et que je stocks ce(s) bloque(s) dans un tableau afin de manipuler bit par bit celui-ci, est-ce que cela vaut le cout pour ameliorer la vitesse d'execution, ou cela n'en vaut pas la peine. Je tiens a preciser que ce code est executer a l'aide d'un Thread independant meme si cela n'a pas grand importance dans mon probleme.
Autant poser ta question dans fr.comp.lang.c, un programmeur C a plus de chance de connaître les détails des performances des I/O C qu'un programmeur C++.
personnellement je pense que si le temps pris par les mécanismes d'appels de la fonction getc est négligeable par rapport aux traitements que tu fais dans ta boucle, il n'y a pas grand chose à gagner à les remplacer par fread vers buffer. manipuler les bits, je pense que c'est probablement suffisamment lent pour que l'appel à getc soit négligeable.
A ce qu'il me semble, la lecture du fichier se fait par bloc dans un buffer de toute façon (à priori, et si le fichier est ouvert comme celà), fgetc se contente de regarder dans le buffer.
-- Sam
Yu
"Samuel Krempp" wrote in message news:4131c974$0$13679$
le Sunday 29 August 2004 11:55, écrivit :
Bonjour a tous,
Voila j'ai un programme dont une partie du code consiste a ouvrir un fichier (fonction fopen()) et a recuperer le contenue de celui-ci (fonction getc()). Je fait cela a l'aide d'une boucle (while) car apres je
fait une operation sur chaque bit du fichier. Ma question est la suivante: Est-ce que si au lieu d'utiliser la fonction
getc(), j'utilise fread() et que je ne lit pas le fichier bit par bit mais
par bloques de 10000 par exemple et que je stocks ce(s) bloque(s) dans un
tableau afin de manipuler bit par bit celui-ci, est-ce que cela vaut le cout pour ameliorer la vitesse d'execution, ou cela n'en vaut pas la peine. Je tiens a preciser que ce code est executer a l'aide d'un Thread independant meme si cela n'a pas grand importance dans mon probleme.
Autant poser ta question dans fr.comp.lang.c, un programmeur C a plus de chance de connaître les détails des performances des I/O C qu'un programmeur C++.
personnellement je pense que si le temps pris par les mécanismes d'appels de
la fonction getc est négligeable par rapport aux traitements que tu fais dans ta boucle, il n'y a pas grand chose à gagner à les remplacer par fread
vers buffer. manipuler les bits, je pense que c'est probablement suffisamment lent pour que l'appel à getc soit négligeable.
A ce qu'il me semble, la lecture du fichier se fait par bloc dans un buffer
de toute façon (à priori, et si le fichier est ouvert comme celà), fgetc se
contente de regarder dans le buffer.
-- Sam
Merci de votre reponse. C'est vrai cette partie de code est en C mais la plupart du reste de mon prog est en C++ voila pourquoi j'ai pose cette question ici.
"Samuel Krempp" <krempp@crans.truc.en.trop.ens-cachan.fr> wrote in message
news:4131c974$0$13679$636a15ce@news.free.fr...
le Sunday 29 August 2004 11:55, yu@yu.com écrivit :
Bonjour a tous,
Voila j'ai un programme dont une partie du code consiste a ouvrir un
fichier (fonction fopen()) et a recuperer le contenue de celui-ci
(fonction getc()). Je fait cela a l'aide d'une boucle (while) car apres
je
fait une operation sur chaque bit du fichier.
Ma question est la suivante: Est-ce que si au lieu d'utiliser la
fonction
getc(), j'utilise fread() et que je ne lit pas le fichier bit par bit
mais
par bloques de 10000 par exemple et que je stocks ce(s) bloque(s) dans
un
tableau afin de manipuler bit par bit celui-ci, est-ce que cela vaut le
cout pour ameliorer la vitesse d'execution, ou cela n'en vaut pas la
peine. Je tiens a preciser que ce code est executer a l'aide d'un Thread
independant meme si cela n'a pas grand importance dans mon probleme.
Autant poser ta question dans fr.comp.lang.c, un programmeur C a plus de
chance de connaître les détails des performances des I/O C qu'un
programmeur C++.
personnellement je pense que si le temps pris par les mécanismes d'appels
de
la fonction getc est négligeable par rapport aux traitements que tu fais
dans ta boucle, il n'y a pas grand chose à gagner à les remplacer par
fread
vers buffer. manipuler les bits, je pense que c'est probablement
suffisamment lent pour que l'appel à getc soit négligeable.
A ce qu'il me semble, la lecture du fichier se fait par bloc dans un
buffer
de toute façon (à priori, et si le fichier est ouvert comme celà), fgetc
se
contente de regarder dans le buffer.
--
Sam
Merci de votre reponse.
C'est vrai cette partie de code est en C mais la plupart du reste de mon
prog est en C++ voila pourquoi j'ai pose cette question ici.
"Samuel Krempp" wrote in message news:4131c974$0$13679$
le Sunday 29 August 2004 11:55, écrivit :
Bonjour a tous,
Voila j'ai un programme dont une partie du code consiste a ouvrir un fichier (fonction fopen()) et a recuperer le contenue de celui-ci (fonction getc()). Je fait cela a l'aide d'une boucle (while) car apres je
fait une operation sur chaque bit du fichier. Ma question est la suivante: Est-ce que si au lieu d'utiliser la fonction
getc(), j'utilise fread() et que je ne lit pas le fichier bit par bit mais
par bloques de 10000 par exemple et que je stocks ce(s) bloque(s) dans un
tableau afin de manipuler bit par bit celui-ci, est-ce que cela vaut le cout pour ameliorer la vitesse d'execution, ou cela n'en vaut pas la peine. Je tiens a preciser que ce code est executer a l'aide d'un Thread independant meme si cela n'a pas grand importance dans mon probleme.
Autant poser ta question dans fr.comp.lang.c, un programmeur C a plus de chance de connaître les détails des performances des I/O C qu'un programmeur C++.
personnellement je pense que si le temps pris par les mécanismes d'appels de
la fonction getc est négligeable par rapport aux traitements que tu fais dans ta boucle, il n'y a pas grand chose à gagner à les remplacer par fread
vers buffer. manipuler les bits, je pense que c'est probablement suffisamment lent pour que l'appel à getc soit négligeable.
A ce qu'il me semble, la lecture du fichier se fait par bloc dans un buffer
de toute façon (à priori, et si le fichier est ouvert comme celà), fgetc se
contente de regarder dans le buffer.
-- Sam
Merci de votre reponse. C'est vrai cette partie de code est en C mais la plupart du reste de mon prog est en C++ voila pourquoi j'ai pose cette question ici.
Loïc Joly
Yu wrote:
Bonjour a tous,
Voila j'ai un programme dont une partie du code consiste a ouvrir un fichier (fonction fopen()) et a recuperer le contenue de celui-ci (fonction getc()). Je fait cela a l'aide d'une boucle (while) car apres je fait une operation sur chaque bit du fichier. Ma question est la suivante: Est-ce que si au lieu d'utiliser la fonction getc(), j'utilise fread() et que je ne lit pas le fichier bit par bit mais par bloques de 10000 par exemple et que je stocks ce(s) bloque(s) dans un tableau afin de manipuler bit par bit celui-ci, est-ce que cela vaut le cout pour ameliorer la vitesse d'execution, ou cela n'en vaut pas la peine.
Comme dans tous les cas de ce genre, il n'y a qu'une seule vérité : La mesure. Note enfin qu'en cas de problèmes de performances, ton OS propose peut-être d'autres fonctions de lectures de fichier que celle du C ou du C++ qui puvent être plus rapides.
-- Loïc
Yu wrote:
Bonjour a tous,
Voila j'ai un programme dont une partie du code consiste a ouvrir un fichier
(fonction fopen()) et a recuperer le contenue de celui-ci (fonction getc()).
Je fait cela a l'aide d'une boucle (while) car apres je fait une operation
sur chaque bit du fichier.
Ma question est la suivante: Est-ce que si au lieu d'utiliser la fonction
getc(), j'utilise fread() et que je ne lit pas le fichier bit par bit mais
par bloques de 10000 par exemple et que je stocks ce(s) bloque(s) dans un
tableau afin de manipuler bit par bit celui-ci, est-ce que cela vaut le cout
pour ameliorer la vitesse d'execution, ou cela n'en vaut pas la peine.
Comme dans tous les cas de ce genre, il n'y a qu'une seule vérité : La
mesure. Note enfin qu'en cas de problèmes de performances, ton OS
propose peut-être d'autres fonctions de lectures de fichier que celle du
C ou du C++ qui puvent être plus rapides.
Voila j'ai un programme dont une partie du code consiste a ouvrir un fichier (fonction fopen()) et a recuperer le contenue de celui-ci (fonction getc()). Je fait cela a l'aide d'une boucle (while) car apres je fait une operation sur chaque bit du fichier. Ma question est la suivante: Est-ce que si au lieu d'utiliser la fonction getc(), j'utilise fread() et que je ne lit pas le fichier bit par bit mais par bloques de 10000 par exemple et que je stocks ce(s) bloque(s) dans un tableau afin de manipuler bit par bit celui-ci, est-ce que cela vaut le cout pour ameliorer la vitesse d'execution, ou cela n'en vaut pas la peine.
Comme dans tous les cas de ce genre, il n'y a qu'une seule vérité : La mesure. Note enfin qu'en cas de problèmes de performances, ton OS propose peut-être d'autres fonctions de lectures de fichier que celle du C ou du C++ qui puvent être plus rapides.