[Python] 文字連結のスピードテスト~Part2~

0 件のコメント




文字連結の速度計測@Python Part2
前回はただの文字列を連結する際に、+とjoinどちらが速いかを計測した。
今回は、連結されている文字列が既にリスト化されていた場合、+とjoinどちらが早いかを調査する
実験環境
  • Ubuntu 10.04.4
  • Python 2.6.5
Code (combiningCharacters2.py)
+による文字連結と、既にリスト化された状態のjoinによる文字連結の実行速度を調査する
#!/usr/local/bin/python
# -*- coding: utf-8 -*-
import timeit

# -----------------------
# 文字結合の実行速度調査2
# -----------------------

# 計測用初期化ステートメント
setup = """
egg = "。・゚・(ノД`)・゚・。"
L = [egg,egg,egg,egg,egg,egg,egg,egg,egg,egg]
"""

# 各々の計測用ステートメント
stmt_plus = "egg+egg+egg+egg+egg+egg+egg+egg+egg+egg"
stmt_join = '"".join((L))'

# 計測+結果
print "# --- +で文字連結 ---"
print timeit.Timer(stmt_plus, setup).repeat(3, 1000000)

print "\n# --- joinで文字連結 ---"
print timeit.Timer(stmt_join, setup).repeat(3, 1000000)
結果
$ python combiningCharacters2.py
# --- +で文字連結 ---
[0.66058087348937988, 0.65228986740112305, 0.6519010066986084]

# --- joinで文字連結 ---
[0.31189298629760742, 0.31206011772155762, 0.3119499683380127]
考察
リスト化された状態のjoinの方が速い!
つまり、1回目の実験の時はリスト化するのにオーバーヘッドがかかってたってこと?!
単純につなぐなら+、リストか既にサれてたらjoinで今後は連結していこうと思います。



0 件のコメント :

コメントを投稿