timeitモジュールで測定すると、`str.join()`より文字列連結が速い結果になってしまう理由(エキスパートPythonプログラミング より)
背景
「エキスパートPythonプログラミング 改訂2版」の11.3.1章「CPU使用量のプロファイル」を読んでいます。
質問
文字列連結よりstr.join()
の方が速いはずなのに、以下の測定では文字列連結の方が速いように見えています。
これはなぜでしょうか?
$ python3 -m timeit -s 'a=map(str, range(1000))' '"".join(a)'
1000000 loops, best of 3: 0.124 usec per loop
$ python3 -m timeit -s 'a=map(str, range(1000)); s=""' 'for i in a: s+=i'
10000000 loops, best of 3: 0.0295 usec per loop
本書には「読書への課題」となっていましたが分からなかったので、ここで質問しました。
本書には、以下の通り記載されていました。
落とし穴は
setup
引数の使い方と、Python3におけるmap
の振る舞いにあります。
環境
- Python 3.6.6