cs_manu18
Messages postés3Date d'inscriptionjeudi 23 janvier 2003StatutMembreDernière intervention13 février 2004
-
16 mai 2003 à 11:05
cs_grandvizir
Messages postés1106Date d'inscriptionsamedi 8 novembre 2003StatutMembreDernière intervention 3 septembre 2006
-
22 juin 2005 à 10:56
Jerem :shy)
J'aurai besoin de votre aide
Je programme sous Delphi et j'essaye de lire octet par octet un fichier avec la fonction "Read(F,value)"
Malheureusement c'est trés long..trop long pour la lecture sur de gros fichier!
On m'a expliqué que si je passe par de l'asm j'irai bcp plus vite..
Je vous en supplie.. ça serait possible de m'aider!!
Un simple code qui permet de lire octet par octet et que je puisse traiter l'octet lu (ou sois en asm ou sous delphi)
je vous remercie d'avance de votre precieuse aide..
filter
Messages postés42Date d'inscriptionmercredi 8 janvier 2003StatutMembreDernière intervention16 mai 2003 16 mai 2003 à 16:13
> Je programme sous Delphi et j'essaye de lire octet par octet un fichier avec la fonction "Read(F,value)"
> Malheureusement c'est trés long..trop long pour la lecture sur de gros fichier!
Qu'est-ce que tu appelles gros fichier???????
> On m'a expliqué que si je passe par de l'asm j'irai bcp plus vite..
N'importe koi. Les seuls optimizations possible peuvent etre fait au niveau du cache, et je doute que ceci t'interesse.
Bien sur, lire octet par octet est le pire facon de lire un fichier volumineux.
CoreBreaker
Messages postés540Date d'inscriptiondimanche 23 mars 2003StatutMembreDernière intervention 5 octobre 20071 17 mai 2003 à 19:47
Päs obligatoirement, si tu programme cela en C ou encore mieux utiliser l'API Windows pour effectuer un Memory File Mapping c'est à dire une projection du fichier en mémoire, Windows gèrera un accès bufferisé optimal.
cs_grandvizir
Messages postés1106Date d'inscriptionsamedi 8 novembre 2003StatutMembreDernière intervention 3 septembre 200622 22 juin 2005 à 10:56
ReadLn et ses amis sont déjà faits en assembleur. On ne peut pas aller plus vite.
Ces fonctions ont un buffer de 128 octets, et ce qui prend du temps, c'est surement la taille de ce petit buffer. Enfin... ?!?
Autre pb avec ces fonctions: tu ne peux pas lire les fichiers binaires (*.exe par exemple), car il y a blocage si on recontre un octet 1Ah. Non corrigé jusqu'à Delphi 7. J'ai implanté une classe permettant de passer outre cette restriction, et je sens que je vais la soumettre, car elle est vraiment bien... sous DelphiFr seulement qui propose un code TBitStream. Ca donnera déjà un avant goût...