これはなに
Pythonのlistのメソッドの一つであるappendをはやくする話です.
私は "Hello World チョットデキル" 程度なのでよく知られた事実かもしれません.
実行環境
- Python 3.6.7
- OS: Windows 10 Home 64bit 1903
- CPU: Pentium Gold G5400 (2C 4T)
- RAM: 8GB
実際にやってみる
いつもの
append_test.py
numbers = []
for n in range(10 ** 8):
numbers.append(n)
# 15.14177393913269[sec]
numbers = []
for n in range(10 ** 7):
numbers.append(n)
# 1.565068006515503[sec]
はやくする
append_test_opt.py
numbers = []
numbers_append = numbers.append
for n in range(10 ** 8):
numbers_append(n)
# 11.622382164001465[sec]
numbers = []
numbers_append = numbers.append
for n in range(10 ** 7):
numbers_append(n)
# 1.0725383758544922[sec]
揺らぎが大きいものの,はやくなります.
なぜはやくなるのか
ご存じの方ぜひご教授頂けると嬉しいです。
【追記】
numbers.append(n)
は、変数辞書からnumbers
を捜し、numbers
オブジェクトの中からappend
メソッドを取り出し、呼び出します。
numbers_append(n)
は、変数辞書からnumbers_append
を探し出し、呼び出します。
参考: https://wiki.python.org/moin/PythonSpeed/PerformanceTips#Avoiding_dots...
とコメントにて教えていただきました.ありがとうございます.