バイナリデータを表示可能な形式に解凍する方法がより高速であることを正確に判断しようとしています。そのために time モジュールを使用しようとしています。私は 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))
100 万回のループで条件をテストすると、次の出力が得られます。
uintle 32.51800322532654
uintle 46.38693380355835
hex 131.79687571525574
1つの出力を2回出力するため、有効ではないようで、なぜそれが起こるのかわかりません。100,000 ループでテストした場合の出力は次のとおりです。
uintle 2.705230951309204
hex 6.699380159378052
予想どおり、出力は 2 つだけです。なぜそれがそのように振る舞うかについてのアイデアはありますか?