Lecture d'un fichier : appel / sans à un module
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 :
Code:
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 |
le module binarystream
Code:
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