В python представьте, что у нас есть целое число, сохраненное как байтовый объект с прямым порядком байтов, и теперь мы хотим добавить его на 1 на каждой итерации. Давайте возьмем следующий код в качестве примера:
import struct
from time import time_ns as time
rng = range(0, int(1e8))
k = len(rng)
_intgr = 25468
intgr = _intgr
start = time()
for i in rng:
bb = struct.pack("<L", intgr)
# do something on bb
intgr += 1
end = time()
tot = (end-start)
it = tot/k #Nano Secs
print('Total time(s) :', tot/1e9, '(s)')
print('Each iteration takes:', it, '(ns)')
Что занимает ~ 400 нс на моем процессоре за итерацию. Мне интересно, если это самый эффективный способ сделать это в Python. Разве нет прямого метода для выполнения базовой математики на байтовых объектах, поэтому мне не нужно вызывать struct.pack
на каждой итерации?
Я видел коды, где они выполняют математику, а также побитовую операцию над байтовыми объектами, например, один из следующих:
bb = struct.pack('<L', 100)
cc = bb[0] << 4
dd = bb[0] + 1
Способно ли это улучшить производительность в предыдущем примере кода?