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 : 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
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
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