Попытка выяснить, что распаковывается и форматируется быстрее, приводит к спорадическому поведению, почему?
Я пытаюсь точно определить, какой метод распаковки двоичных данных в формате для просмотра быстрее. Я пытаюсь использовать модуль времени, чтобы сделать это. Я работаю с модулем bitstring, так как нашел, что это самый простой способ при распаковке, я работаю с битовыми данными. Это небольшой тестовый пример, чтобы увидеть, какой путь быстрее, так как я обрабатываю миллионы строк. Это должно быть отображено определенным способом, поэтому форматирование там.
from bitstring import BitArray
import time
s = BitArray('0x0081')
start = time.time()
for i in range(100000):
test = s.unpack('uintle:16')
temp = hex(test[0]).lstrip('0x').zfill(4)
end = time.time()
ttime = end-start
print("uintle " + str(ttime))
start = time.time()
for i in range(100000):
hex_val = s.unpack('hex:16')
temp = hex_val[0][2:]+hex_val[0][0:2]
end = time.time()
ttime = end-start
print("hex " + str(ttime))
при тестировании условия на 1 млн. циклов это вывод:
uintle 32.51800322532654
uintle 46.38693380355835
hex 131.79687571525574
Кажется, он не действителен, поскольку печатает один вывод дважды, и я не могу понять, почему это происходит. При тестировании с 100000 циклов это вывод:
uintle 2.705230951309204
hex 6.699380159378052
только два выхода, как и ожидалось. Любые идеи о том, почему он ведет себя как таковой?