Pythonでは、文字列の編集で%でのフォーマットが行えるが、ひょっとして%だと遅いんじゃないか、と思い測定した。
ソース
import time start = time.time() print("no.1--") a = '' for i in range(50000): b = '123' c = '456' a = a + 'zabc'+ b +'def'+ c +'ghi' elapsed_time = time.time() - start print(len(a)) print(elapsed_time) start = time.time() print("no.2--") a = '' for i in range(50000): b = '123' c = '456' a = 'z%sabc%sdef%sghi' % (a, b, c) elapsed_time = time.time() - start print(len(a)) print(elapsed_time)
解説
適当な文字列の間に、適当な文字列変数を編集するという操作を5万回行う。
変数aについては、再帰的に編集しているため、最終結果はすごく長い文字列(80万文字)となる。
環境
- MacBook Pro (Retina, 13-inch, Late 2013) 2.6 GHz Intel Core i5 16GB RAM
- OSX Yosemite 10.10
- Python 3.3.3
結果
no.1
800000
1.7229290008544922
no.2
800000
1.919692039489746
これだけ回数の繰り返し処理で、0.2秒程度の差なので、ほとんど変わらないと言える。
結論
処理速度にほとんど差がないということは、%演算子の方が最終結果を予測しやすい分、%の方がコーディング的には良いと思う。