Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- with open(file, "rb") as infile:
- data_arr = []
- start = time()
- while True:
- data = infile.read(6)
- if not data: break
- data_arr.append(data)
- import timeit
- def read_original(filename):
- with open(filename, "rb") as infile:
- data_arr = []
- while True:
- data = infile.read(6)
- if not data:
- break
- data_arr.append(data)
- return data_arr
- # the bigger the file, the more likely this is to cause python to crash
- def read_better(filename):
- with open(filename, "rb") as infile:
- # read everything into memory at once
- data = infile.readlines()
- # separate string into 6-byte chunks
- data_arr = [data[i:i+6] for i in range(0, len(data), 6)]
- return data_arr
- # no faster than the original, but allows you to work on each piece without loading the whole into memory
- def read_iter(filename):
- with open(filename, "rb") as infile:
- data = infile.read(6)
- while data:
- yield data
- data = infile.read(6)
- def main():
- # 93.8688215 s
- tm = timeit.timeit(stmt="read_original('test/oraociei12.dll')", setup="from __main__ import read_original", number=10)
- print(tm)
- # 8.579144 s
- tm = timeit.timeit(stmt="read_better('test/oraociei12.dll')", setup="from __main__ import read_better", number=10)
- print(tm)
- # 103.0508528 s
- tm = timeit.timeit(stmt="[x for x in read_iter('test/oraociei12.dll')]", setup="from __main__ import read_iter", number=10)
- print(tm)
- if __name__ == '__main__':
- main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement