Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Manipulation de fichier

3 réponses
Avatar
Yu
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.

Merci de votre aide.

3 réponses

Avatar
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

Avatar
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.


Avatar
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