Je sollicite votre aide afin de concrétiser cet objectif farfelu que je me suis fixé et
dont je n'arrive point à me défaire.
J'aimerais créer en quelque sorte un programme de compression et j'ai besoin de jouer avec
un fichier source puis d'en écrire un autre à l'aide des informations du fichier source.
Voilà mon code... (J'aimerais avoir des conseils pour l'optimiser car pour l'instant, le processus prend plusieurs heures
En gros, ce que ce code fait, il ouvre un fichier en hex, puis réécrit chaques caractères hexadécimal pair dans un fichier.
Donc, si mon fichier est 0XBADADFC, le fichier écrit serait 0XAAF
123 4567 246
Présentement, avec le script actuel, il y'a de gros problèmes.
Il est extrêmement lent...
Code : Tout sélectionner
$source = "C:\Users\Sage Pourpre\Desktop\Projet compression ultime\01. Over The Hills And Far Away.rar"
$dest = "C:\Users\Sage Pourpre\Desktop\Projet compression ultime\01. Over The Hills And Far Away"
$f = FileOpen($source, 16)
$count = 1 ; conteur (pour travailler avec 100 000 caractères à la fois plutôt que la totalité)
$r = FileRead($f)
FileClose($f)
$r2 = ""
$len = (StringLen($r) - 2)
ConsoleWrite($len & @CRLF)
$f = FileOpen($dest, 17)
For $i = 1 To $len
$ii = $i + 2
If $i = $count Then
$count += 100000
If $count > $len Then
$count = $len
EndIf
$r2 = StringMid($r, $count - 1000, $count)
ConsoleWrite($count - 1 & @CRLF)
Else
If IsInt($ii / 2) Then
FileWrite($f, StringMid($r2, $ii, 1))
EndIf
EndIf
Next
FileClose($f)Il semble plus rapide d'utiliser fileWrite après chaque opération plutôt que de collecter des milliers de caractères en mémoire
puis de les écrire qu'ensuite.
L'idéal serait de pouvoir "lire" le fichier au fur et à mesure de l'opération plutôt que de le lire en entier avant de commencer
mais je n'ai rien trouvé me permettant de faire celà.
Des idées pour améliorer la vitesse d'éxécution de ce script ?...




