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秒程度の差なので、ほとんど変わらないと言える。
結論
処理速度にほとんど差がないということは、%演算子の方が最終結果を予測しやすい分、%の方がコーディング的には良いと思う。
