Petit probleme à resoudre .. [resolu]

Petit probleme à resoudre .. [resolu] - C - Programmation

Marsh Posté le 19-10-2003 à 09:13:22    

Dans un fichier BINAIRE qui contient des données organisées comme suit :
 
      Infos1    (Taille_Infos octets)
     BouDimage1 (Taille_BouDimage1 octets)
       Infos2   (Taille_Infos octets)  
     BouDimage2 (Taille_BouDimage2 octets)
 
Les fread bouffant enormement de temps ,je tient à en faire le moins possible (idem pour le memcpy je m'en passerait bien ..)
 
je souhaite remplir 3 buffers d'un coup ..


Message édité par stancw le 26-10-2003 à 08:28:26
Reply

Marsh Posté le 19-10-2003 à 09:13:22   

Reply

Marsh Posté le 19-10-2003 à 10:27:36    

fread c'est pour les fichier binaires ...; ben fread (.... la taille qui va bien), autant de fois que tu as de lecture à faire
 
mais on comprends rien à ton machin

Reply

Marsh Posté le 19-10-2003 à 10:30:22    

Perso, tu lit le fichier en entier d'un coup et ensuite tu copie les bouts d'infos et d'images dasn les tableaux.
 
hop TP résolu :o

Reply

Marsh Posté le 19-10-2003 à 10:36:00    

non :o

Reply

Marsh Posté le 19-10-2003 à 10:53:08    

skoil a question ? [:xx_xx]

Reply

Marsh Posté le 19-10-2003 à 11:11:59    

on ne sait toujours pas

Reply

Marsh Posté le 19-10-2003 à 11:18:34    

Taz a écrit :

fred c'est pour les fichier binaires ...

C'est pas fred, c'est stan pour les intimes.

Reply

Marsh Posté le 19-10-2003 à 13:19:02    


 
et pourquoi ???

Reply

Marsh Posté le 19-10-2003 à 13:24:05    

non :o

Reply

Marsh Posté le 19-10-2003 à 13:40:36    

super comme argumentation, tu deviens lourd la quand même ...

Reply

Marsh Posté le 19-10-2003 à 13:40:36   

Reply

Marsh Posté le 19-10-2003 à 13:42:25    

non :o

Reply

Marsh Posté le 19-10-2003 à 13:43:18    

je veux bien ta solution, mais c'est toi qui lui expliques les pointeurs, l'allocation dynamqiue, memcpy et tout le tralala
 
toi aussi tu peux le dire
 
non :o

Reply

Marsh Posté le 19-10-2003 à 14:35:26    

Serieux !! vous avez rien compris ???
 
Dans un fichier BINAIRE qui contient des données organisées comme suit :
 
      Infos1    (Taille_Infos octets)
     BouDimage1 (Taille_BouDimage1 octets)
       Infos2   (Taille_Infos octets)  
     BouDimage2 (Taille_BouDimage2 octets)
 
Les fread bouffant enormement de temps CPU je tient à en faire le moins possible (idem pour le memecpy je m'en passerait bien ..)
 
je souhaite toujours remplir 3 buffers d'un coup ..


Message édité par stancw le 19-10-2003 à 14:35:49
Reply

Marsh Posté le 19-10-2003 à 14:38:58    

moi j'ai ça dans mon fichier binaire
 

ýN3ýWýRýýýSýý␍ýP␉ýýýý    4ýýJýý*ý≠ýýýýý␍Kÿ^ýýýý3ýý @1␤ýý<<ýýý*ý�ý7ýýNVýý>├<Ua�ý�,ýBU␋ýS]@ý␊┼ý!ýHCý─ýý<ýFýLý?8 ܻYýý2ý�7┌ý└�Iý�Eýý?3ýý$ý+ýü1ýýVýTA'ï; ─7ýX�ýý(ý┤ý␌.ýý$ýý└.┌^ýã
ý┤X&   ýý1ý&#960;ý=ýý&#139;ýý>XI;ýýYýýýý�ýÚýý(Výýý&#830;ý8ýýLýNý8ý:ýJ5nD���Z�P�"��p�g�Y ��ZI\��!�,�!4pT���R@ng�װp���C��EYnc��~�0��6���ց�+]4                               ýGýýý£Q
                                                                                                                                       �97��ב�0�J� (E�
      딀                                                                                                                                                    Mxbq��L���vE�,gVMd����B�4��s�Xm{[��{r����⮾��+A�SN���.�TYP��       ��_z���YAn ����*�$m��L��L^*�$��?�{���$���6c4��:��-��n�J�B�x�ڱ�JrC��@�&#788;fy�PCw��L�5x�&�xt$��J���(Cq�҃��Nu��-��C��)��i���#в},�����V5��}���C�L��&��#�A�
��nr}Ӧk�&#760;$|A�|"��B�x�flN�+o�1�Jռq<N\P֔-=���▒ý݅YHKý┌FýRý:ý│Oý[ý┴ýýý&#150;◆ý␌ý␉ý3ýýýý�ýý1L└X<≤ý≥ýýCSý┌ý&#787;^ý)ý(Y9èXýýý�=◆�
                                                                                                                         ýý.ýý;ý>␊ýý◆ýýýýýýK\┘Pýý
                                                                                                                                                  4┘└½Výýý·ý ý▒ý,␤Fý1ý4ý1ýN␊ýGýý8�ýPý┼␍ýýý└ýý3│°ý┬6^ýý±'ýôýýý<5ýý␌ý50I┤FýýS≠ýý�¿ýV°ýýEýýPýN␤ýÎý&#960;ý┘▒ý±@ý#¿┴ý^+·ýýýýU
Aý.Zý\ýOýýN ␊U┼␋&#799;┌ýýýý�ý▒ýT&┘ýÕýýýýýW@ýL$.ý␍ý          ý?ýýð'£^ýX·ýTý─ý␊ý├:ýý┬ýT?
ý┬Fý?ý!ýýýý┤ýPýO6ýýýO�ýP3ýýýA≤≥ý9ý9ýýýý"ýýY·ý◆/ýýSý3ýýý▮2ý␋C%┘ý[ýV▮ý≤ýý^ý�6]£35▮Pýýý#ýC3ý9▒ýýý1Tý┐ý/ý,ýýý>
 �ý6ýýý.ýýý␊ý&"$<ýýýýZ─ý≤'┬Uý·ý±ý␋ýý7ÿOýý�ýýýý#ýýý8=$ý]!ýLRý(ýE3└ý≤&├ýýýý@·7£ý%≤ý▒ýýýýýýýý)ýQ& )◆"┌┴Uýý┤ý␤ý┐ýý␊▮
                                                                                                                              ±␊G�0ýýý(@]ý+ý·Q◆ýýý
                                                                                                                                                   ý!ý ␍ý│ýýZýýN
                                                                                                                                                                 8Sýý▮<ý?K"ýADýRý
                                                                                                                                                                                   ýý┬Y┌─ýý─ý▒.≠,ýýýY␉ýý*)ýýýýýý1ýý)AMý�ýý\ý├ý◆Yýý4·ý▒┐ý:%=3ý&ýý≠◆'[&#822;ýKý␌ýý!ýýýý▒%£ý0EýýýZýýUýSýý␤Kýýý;␤ý�Uý─ýý▮ý&3ýýýýý$éý7Býýý·&└ýýDýý·└·▒ýý(ý▒B8ý┐��ý,+]ýý┬◆ýýýý┐3ýýٔýýý≠␌ý±
┘1ýýÓ4*ýý≥┼ý┬MýýTýCýý�±ý│UýTýVýý"␋ýK2ý±3ýý+ýýYW␉ýý┬A(&#960;ý  S≤ýý│°1ý?(
/ý7)ýý ý␉␋VCýCý:ýýýýOý␉ªýýý6ý3�Pýýýý┬ýý�B1O&#304;�D����,>0&#887;v��*;7rU2)�F���JPb�4�I����07Q*s*�`��-}"H�V�1�%AU��8w�AA�彽�'?�u�[~�J�?p�\N�7���(fn9�l��]��ӣj^��L�2S��~�cq$`r��p�s]������RNC�Z���?��]b��^�B����.3Y��vzI����R�ڦ�}Q�?ЫQ*/��
��U�>�/P_Z꜇t�0���Ki>�硶i�/�72��&#769;N=��Qz7�Ah�֜:5>8^
                                      94�1Ҿ�4l6��(��j\9}<5/���E�U~��G7�?`�LI�[��*u2��Z&#622;�\=ýýýýý▒␍ýHýýýýý¼£5ý
                                                                                                                     ≤ýAýý┼'ý┤ý
┬ý°ýý␊┐&ý9·Hý≠Jý┴ý�ý;┬9^ýýýýýýýý;Tý─┤ýýý≠ý┌ýý␍JýÂýýý¿ýý�LýF�ýL─ýO9┼ý9ýý◆ý␋([ý3ýý
                                                                                            Xýý°ýý␌VýKýýN─Uý┴,±ý/ý\Pýý␊ýHý␋ý┬ýýýý�Lý4;ýý␉=ýýYIý>ý%├ý�ýH£.%'ý·ýýýýýýýý
                                                                                                                                                                            ý@ý=
ý≥Rý\ýýýýý[ý.ý:&ý?
1ýý+ýý4ýIý[ò�DRý≥ý'Wý␍ýý<S¡ýýýýLýýýý3ýýý-ý5
ý·ýýý)ýBý7R="◆%ý▮9?┐JýýýýRPýýý7ýE@ý≥ýLZ␤=ýý┼ýÈý%-␌$ý��U��.�&����j���!�S[���Z&#267;)5��";;kt�,'�q��ܨ���&#717;�%Djxo�ZZG8Z�&#548;�)g��U�S�c5E��L�<�6H����.xq~M��'2�����k&#626;PmMIe�>��^
�����e��ӂZ��^@�6&#594;�����CЉ�䬭M|�������L�0L*�%Z�"u�ԦR��@�J��F��$ý┼ýN�býýýý:/!◆�ýý@ýÕý"5&#135;ý#◆ý0°S��m        ��~+w�4��g�rk�^?���-F�F{�Q�����G5b�-�&#894;�e�:��-�����Hqy]�9�8��T7�@,$���>�dd�v
��e�?��qZ�b
AR�'�!��C�����*�t-\��K]��5����+�+�&#302;�`G
                                         @@�6�|`Z*��}[��]���s;���b��Mh��[%??�>���ϳmt���x��E���1�: ���C����Z��O��6j@�-]Ok-V!��x�␊␍9ý"R4ýýýý
ý@ýý)+WýýW4ý<ýýýýIý≥ýýý9BýýTSý8:▒┤F┌┬ýýýý▒ý+&1ýý┌�]ñ°␉       ␊ý3ýýý&ýZ▒┐\ý>�◆8ý◆?ý0ýý±▒#ý5ý;ýýýÓ°ý1ýý▮␉1OýÍYýýýYý"79*ýý
                                                                                                                                   ýý=ýMý␊ý┤ýýýý^1ýýýý&ý°ý␌*ý4≠ýý␋ýCý@&#134;ýýý  
                                                                                                                                                                                 *ý┴/ýF
ýýý≠Aýýýýýýýýýýýýýýý2=─2ý≥+ý;ýý                                                                                                                                                   2ý9Sý&@ýý
       ýý&'ýý5ýýýýý␉ý"Vý������s�`�����ּj&#798;��G�&#315;�HL�a��x��ý�ýý▮E6"ý^MýýýF*─Bý␊ý,ýLýWýýý└ý│^ýýýý├ý┴Z�ýýQý'ýýý ýýWý&#960;VýýVý£4ý≤ýýý�W!`v���?�3P��w>�fB�K��Z�=�I�[!,��C@<d��^�ct!,��6B���^��.�WF�o&#506;���$�j�8�n}�Y%�
                                                                                                                                                                                                                   7�"NX'��ߡh�:_eO��"r���k��6Wl�
�[}���t�����,#���Ԋ�&#593;ܸ�x�8��Tࠒ�ýýNýýu� ��ҵ�D|���        !\Ъ�jl*�a����
▮°ý┬ýý5ñOýýý&#960;ýý·ý±ý=ýýýF)             ��qp�>�ڊ�6�(�&#603;����V��y#~iv��w�~��0�y�q�#0���f���/ݽE㕃��c��&#981;��\�!ýýýýÒýý�?ýýBH6&#960;5*ýGýBýýIýýýý¹ýýÉýUý␊ýL4┘ýý*
ýýýýýý┼"ýý▒?ý6ýýý┌ý±?Aýý*
                          Gýýý4,ý8ý┐└J%ý┐ýýý  ]ýýGýýEýý│·ýýý(ýHS┌ýýUýý┘;ýý
≥CýTýýý ýS6ýý>┘
Eýý␤ýý(│ýý␌ý≤ý␋2├ ýMý·E:ýýý"ýýNýýU&#150;┘3'ý9ý␋Z0␤ýýý·ýý<#ýý␤�ý␉ý>┬@@ýýýý@ý&#131;␉Fý]O≠-ýý6 VýýDýýýýýý59ýý├Ký&#960;ýýýýVֵý
                     #�␤ýýý<␋(ýKýýý1ýýýýýý�&#814;ýD┤!ý2␌ýýýýýD2Q±M,Tý\$
▒ýýÞýDGHF@-ýýB]ýý!X·ýýýýýK�C┤ý
�I�}N��ؚ&#768;&3���2�1���V�j���#СX�8:)�{�IF[���95Fýý3R≠ýý<+/ý6i�2�<�E��������.�r�lcu�sA?M��&�og��S&#329;B��[�ٯ�E���BL5�3�$�hs� �/_��N����=E���\
�Q�����/
�        �6��|<�3���|   :�wF�  -U�5<d�
b=&#482;i��8��N�t�x@l��Q��{M��o���|kh�����)VZ�7����g�)z�ԅn��j��*l�?�������;?]5��)R%�i7�g|p�F��e=����k�o՝y%%&#663;l*�fl��X��6��c�H?�w
E��я�k�uh�GR�                                                                                                                      �T�@&#509;'���&#320;+��d6
�oj��>bcs�q��$dx��Е�JZ��?�Xn�>r;��:�mk�MVZ���d��0����&#287;o�[�}*W2PjQ'#�2S2�&�r�g\(&#522;�ӕ�՜��Fz�Pqh�
                                                                                                            �q��MÐ}�C����
                                                                                                                          l�U/x���)�ýýý%£≠ýýýVý*+◆&#799;ýýEýýÍ"┼L°�ýý/ýý+ý5ýa�e�!o   /�^�P���5&#433;�}]�:���`?�TIýýý�Hýý1:ýS4ýOSCý┬ýýýý│ýý8ýW5ý.  
ýW«┌ý KT"ýýý┤0ýýý◆%ELýýý^┴ýåýýO6ý&#960;ýýýýRýý┼ýý≤┌Cý>NýýýýýA&#960;Dýý·ý┤<ý\ý#(B7ýýýýýýúý�␤Lý?ýý┴J◆┼S¹PýQ�ý¿C─3ZýDýýýýO%\▮ýý≥ ýVB"0GZÞ≠&ýYRýOýLý
@S�8'�-��m�CӬ��p��G�?��WӉ���D�_�+�٣~��C�hy
                                             ^������l���y�.�ѹl���(���&#496;~��=�~5�\�zK���~\&#474;��n��[�-7$�E�F�M0�D?�O
Ep;v�"v܂�����l�a&#764;R$7Y����t���^0�������X��jK)�G�A�G�Db�z���ܥ~xS�6��c�R��p*H�
                                                                                    ݂�Ҩ��6�-��Lg��h�S��H��&ýýDM,ýýýý
                                                                                                                      .5ýýNCý2
ýý┘ý@ýý1ý95ý/ýAG┴ýý(ý' ýEýýýT       Pýý8ýKý\ý␌·␊ý)ý·ýý�◆ýýý─ý&#960;=ý<ýýý␤ý8ý┐ý7ý␌ýM┬ý@ý┌ýýR6Yý5E
VºAýý(ýýI°.�␋ý>ý1ýý&#960;▮┤▒┐9ý>ý°ý┤Cýý─@ýý
FW�j<�u\��Y#����g�8�Ã����%&#691;���6�\:�ýýGS-ý┬T>iS�V��k�b;���1�)��B��j�uz�Oy�}�S�}�a�y���
                                         |��!����.��xP�^G�O.�EsYN
                                                                   ���mQ����&#709;���@�Q�:���ýýHýýýýýýýý0 ý@Pýýýý
ýY┼5ýI▒ýýýAýý�CýAý(A^␌─ý▮┴ýýýý9ý┐ýTý␉│7^Jýýý4ýøý␤!5ýýý�PDý?ýýTý─ýý:┤°Eý≠ýýýýýýýý�(���}�9�8�ߨ�j��fI;��_{��Z��&#574;ܰ�PH0fF�d@!}s�N�s�՜"%��6b��c�ý!ýB┤ýý▮�ýý┤ýýUýýýýýý≠│ý┐ý␉ý]␍ýýýýýNý%�<ýý'ýýýý±ýý│ýSýVýDVýý>ýTý
     ýýýEý·:<␤ýý\ýýe��XM�>��$��e��Y�&#301;7�����?�v��
�n_�&-E���L��ceD(����-J�W�wH��t�9�އ&#277;/��6f�c�F�!&�<��l�W)��#`r�|�Z�Dýý,ýX▒ýý8ýý␉ýN�&·JT(ý[Gý▮3ý─6▒ý1ý


 
et on m'a dit de pas faire de programme par ce que ça consomme du temps CPU

Reply

Marsh Posté le 19-10-2003 à 14:44:33    

StanCW a écrit :

Serieux !! vous avez rien compris ???
 
Dans un fichier BINAIRE qui contient des données organisées comme suit :
 
      Infos1    (Taille_Infos octets)
     BouDimage1 (Taille_BouDimage1 octets)
       Infos2   (Taille_Infos octets)  
     BouDimage2 (Taille_BouDimage2 octets)
 
Les fread bouffant enormement de temps CPU je tient à en faire le moins possible (idem pour le memecpy je m'en passerait bien ..)
 
je souhaite toujours remplir 3 buffers d'un coup ..


Ben alors tu lis tout ton fichier en memoire d'un coup et tu bosses sur le fichier en memoire.
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 19-10-2003 à 15:01:02    

En gros fo lire tout ça en 40ms maxi pour pouvoir recracher Boudimage1 et Boutdimages2  
 
Un peu comme si il fallait lire les trames video dans un fichiers avi et les afficher ...  
 
le debit du disque est suffisant (SCSI3) et taille(Boudimage1+Boudimage2) = 432Ko
 
Contrainte temps = > Temps réel donc souci si 15 memcpy ou 36 fread ...
 
 
 

Reply

Marsh Posté le 19-10-2003 à 15:03:47    

les read qui bouffent du temps CPU, on aura tout vu ...

Reply

Marsh Posté le 19-10-2003 à 15:07:19    

Utilise mmap comme ça tu auras lu ton fichier en memoire sans l'avoir lu du disque.
 
:D

Reply

Marsh Posté le 19-10-2003 à 15:10:14    

me suis mal exprimé .... desolé en fait ça bouffe du temps ...tout court ... 25 ms sur 40 ....
 

Reply

Marsh Posté le 19-10-2003 à 15:16:16    

vu les connaissances que t'as l'air d'avoir, je pense franchement pas que tu sois à quelques ms pres. surtout que c'est faux. la bufferisation ça existe, ton système le fait très bien, les FILE* en rajoute une couche

Reply

Marsh Posté le 19-10-2003 à 15:27:43    

T'es en train de me dire que quelque soit le systeme, la lecture sur disque d'un fichier video peut se faire en temps réel par ce que la bufferisation ça existe ???
 
merci Kristoph : j'avais deja utiliser mmap pour creer des shm, mais jamais avec des fichiers , je vais essayer .


Message édité par stancw le 19-10-2003 à 15:29:48
Reply

Marsh Posté le 19-10-2003 à 23:01:10    

fait ca en php :o

Reply

Marsh Posté le 20-10-2003 à 03:05:21    

Taz : oui les read/fread, ça bouffe du CPU et oui, il faut essayer d'en faire le moins possible. Un system call c'est minimum 1000 instructions. Essaie de lire un fichier octet par octet avec read et tu le constera par toi même...
 
Sinon j'ai toujours rien a compris a la structure de ton fichier. Mais voila quelques idées en vrac pour éviter de faire trop de lectures :

  • Lire par blocs suffisemment grand, en faisant des realloc(), jusqu'à la fin du fichier
  • Determiner la taille du fichier en se positionant la fin (lseek) puis lire cette taille
  • Si tu ne veux pas de read, tu peux aussi mapper le fichier en mémoire (mmap) comme suggéré par Kristoph

Reply

Marsh Posté le 20-10-2003 à 08:01:37    

ou t'as vu que fread faisait systématiqument un sytème call ?
 
amuse toi à lire un fichier avec fgetc, ça ira bien plus vite que tu ne le crois. Faut arrêter la parano les mecs. L'autre commencer déjà à m'expliquer qu'un read prends 40ms le temps de déplacer la tête du disque ... ce sujet n'est vraiment pas sérieux
 
au fait j'efface mon petit drapeau


Message édité par Taz le 20-10-2003 à 08:19:36
Reply

Marsh Posté le 20-10-2003 à 20:26:10    

Taz a écrit :

ou t'as vu que fread faisait systématiqument un sytème call ?
 
amuse toi à lire un fichier avec fgetc, ça ira bien plus vite que tu ne le crois. Faut arrêter la parano les mecs. L'autre commencer déjà à m'expliquer qu'un read prends 40ms le temps de déplacer la tête du disque ... ce sujet n'est vraiment pas sérieux
au fait j'efface mon petit drapeau


 
 
L'autre :
-> C'est STANCW  
 
un read prends 40ms  
-> Heu...  relis ce que j'ai écris ou achete toi des lunettes .
 
ce sujet n'est vraiment pas sérieux-> c'est grace à toi !! au lieu de denigré à tout bout de champ pose les bonnes question, ou donnes des réponses et si ça ne te plait pas va voir ailleur !!!
 

Reply

Marsh Posté le 26-10-2003 à 05:06:27    

change le nom du topic...

Reply

Marsh Posté le 26-10-2003 à 08:27:24    

La clé ?? la lecture asynchrone...
pendant qu'un thread lit  contenu du fichier et reorganise le tout (pour chaque bloc mentionné plus haut) un autre se charge de commuter les bancs memoires de la petite carte vidéo(carte CNA)
 
j'ai pas essayé avec aioread mais ça doit marcher pareil
 
merci


Message édité par stancw le 26-10-2003 à 08:29:03
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed