Page 1 sur 1

Optimisation...s #2

Publié : ven. 10/avr./2009 18:52
par Progi1984
Toujours pour Moebius,

Voilà, j'ai une chaine qui va contient le code d'une fonction ASM.

En fait au fur et à mesure de la lecture du code ASM (ligne par ligne), je remplis cette chaine (Chaine = Ligne + #System_EOL). Sauf que cela prend plus de 10 minutes pour un code ASM de 180 000 lignes de code.

Auriez vous une idée pour optimiser cela ?
Devrais-je passer par une zone mémoire ? Et faire un poke à chq fois ? Cela serait il vraiment plus rapide ?

Publié : mer. 15/avr./2009 11:53
par gnozal
As tu essayé avec une linked list, chaque élément de la liste étant une ligne de code ?

Sinon, une zone mémoire devrait être rapide, à condition de réserver une taille assez grande dès le départ pour ne pas faire de ReAllocateMemory() à chaque nouvelle ligne de code.

Publié : jeu. 16/avr./2009 22:04
par Progi1984
gnozal a écrit :As tu essayé avec une linked list, chaque élément de la liste étant une ligne de code ?

Sinon, une zone mémoire devrait être rapide, à condition de réserver une taille assez grande dès le départ pour ne pas faire de ReAllocateMemory() à chaque nouvelle ligne de code.
J'avais pas pensé à la liste chainée pour contenir le code. Bien joué, et d'aprés ce que j'ai pu voir sur mes premiers tests, c'est de la balle, lecture et ajout ultra rapide. On sent que Fred a bien retravaillé les listes chainées...

Publié : mar. 21/avr./2009 7:49
par brossden
Je ne sais pas si ce code peut t'aider mais si ton code ASM est dans un fichier tu peux utiliser cette petite routine.

Code : Tout sélectionner

Fichier.s ="Nom du Fichier . extension"
OpenFile(1,Fichier)
Lg=Lof(1)
*Mem=AllocateMemory(Lg)
ReadData(1,*Mem,Lg)
CloseFile(1)
String.s = PeekS(*Mem,Lg)
Debug String


Publié : jeu. 23/avr./2009 6:21
par Progi1984
Merci à vous deux, ca fonctionne ! Nickel, j'ai encore gagné deux minutes.