最近、Python (子供の頃に GW BASIC を使用して以来、初めてのプログラミング言語) の学習を開始しました。バイトオブジェクトにバイトを追加するとき、各バイトの追加には最後のバイトよりも時間がかかることに気付きました。対照的に、整数をリスト オブジェクトに追加する場合、各整数の追加には最後の整数と同じ時間がかかります。次のプログラムはそれを示しています。
import time
import struct
time.clock() # for Windows
def time_list():
print("adding 9,999,999 0s to one list 9 times:")
a = []
for i in range(9):
start_time = time.clock()
for j in range(9999999):
a += [0]
end_time = time.clock()
print("loop %d took %f seconds" %(i, end_time - start_time))
print()
def time_bytes_object():
print("adding 99,999 pad bytes to a bytes object 9 times:")
a = bytes()
for i in range(9):
start_time = time.clock()
for j in range(99999):
a += struct.pack('<B', 0)
end_time = time.clock()
print("loop %d took %f seconds" %(i, end_time - start_time))
print()
time_list()
time_bytes_object()
bytes オブジェクト (または struct.pack 関数) が原因で、バイトの追加に時間がかかるのはなぜですか? または、私の例で使用されている方法よりも高速に大量のバイトを収集する方法はありますか?
助けてくれてありがとう、
ビクター