有没有一种方法可以在python中对小endian字节整数进行基本的计算?

2024-10-05 13:25:07 发布

您现在位置:Python中文网/ 问答频道 /正文

在python中,假设我们将一个整数保存为一个小endian byte对象,现在我们希望在每次迭代时将其加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)')

每次迭代占用我的CPU约400 ns。我想知道在python中这是否是最有效的方法。有没有一个直接的方法来对字节对象进行基本的计算,这样我就不必在每次迭代时调用struct.pack

我见过这样的代码,它们在字节对象上进行数学运算和按位操作,如以下代码之一:

bb = struct.pack('<L', 100)

cc = bb[0] << 4
dd = bb[0] + 1

在前面的示例代码中,这是否能够提高性能


Tags: 对象代码importtimeitstartstructpack

热门问题