Bonjour
Je tente d'effectuer la lecture d'un fichier binaire de 2 façons différentes. A première vue les 2 méthodes semblent identiques mais j'ai un rapport 3 en terme de délai de traitement. Je n'arrive vraiment pas à comprendre d'où vient le problème. C'est vrai aussi que je débute en Python.
Je suis en version 3.7.3
Voici le programme principal :
le module binarystream
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39 import time import binarystream import struct fn = "C:/toto.bin" # Ouverture du fichier with open(fn, "rb") as file_p: # Methode 1 file_p.seek(0) tmStart = time.time() index = 0 ar = file_p.read() while index < len (ar): value = ar[index:index + 4] index = index + 4 val = int.from_bytes (value, byteorder='big', signed=True) deltat = time.time() - tmStart print("Methode 1 : {:f}".format(deltat)) # Fin Methode 1 # Methode 2 file_p.seek(0) tmStart = time.time() ar = binarystream.BinaryStream(file_p) while ar.index < len(ar.ar): value = ar.read_int32() deltat = time.time() - tmStart print("Methode 2 : {:f}".format(deltat)) # Fin Methode 2
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 import struct class BinaryStream: def __init__(self, file): self.index = 0 self.ar= file.read() def read_int32(self): value = self.ar[self.index:self.index + 4] self.index = self.index + 4 val = int.from_bytes (value, byteorder='big', signed=True) return val
J'ai l'impression que les 2 méthodes sont identiques mais pour un fichier de 25Mo :
Méthode 1 : 7s
Méthode 2 : 21s
Mon erreur est certainement évidente mais rien à faire, je ne vois pas...
Merci
Partager