Python は全体を関数で囲むだけで早くなる
先日,インターネットを放浪していると気になる文面が目に入った.
Jupyter NotebookでもPythonのコマンドライン実行でも、関数化されていないプログラムは実行速度が遅くなります。
https://qiita.com/sugulu/items/c0e8a5e6b177bfe05e99#15-プログラムは関数化して実行する
詳細は当該ページを参照いていただければ幸いであるが,要は直書きするよりもコード全体を def main() で囲って main() で実行する方が速いということである.
しかも結構な速度差があるっぽい.
さらに検索すると,もっととんでもないものが見つかる.
なんと def main() で囲むだけで TLE が AC に変わるくらいはやくなるらしい.まじかよ.
https://teratail.com/questions/210972
実際にやってみた
code:Python
import time
def local_var_main():
a = 0
for i in range(10 ** 7):
a += 1
print('main() で囲った場合')
start = time.time()
local_var_main()
process_time = time.time() - start
print(process_time)
print('囲わない場合')
start = time.time()
a = 0
for i in range(10 ** 7):
a += 1
process_time = time.time() - start
print(process_time)
10 回実行した結果がこちら
https://gyazo.com/14ebf40a8d6fa2e4902d4bfa7ae3c4b5
労力に対しての改善量がすごい.
#Python
#Atcoder
#unyacat
#記事