ラベル Python の投稿を表示しています。 すべての投稿を表示
ラベル Python の投稿を表示しています。 すべての投稿を表示

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




文字連結の速度計測@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で今後は連結していこうと思います。



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




文字連結の速度計測@Python
実験環境
  • Ubuntu 10.04.4
  • Python 2.6.5
Code (combiningCharacters.py)
+による文字連結と、joinによる文字連結の実行速度を調査する
#!/usr/local/bin/python
# -*- coding: utf-8 -*-
import timeit

# -----------------------
# 文字結合の実行速度調査
# -----------------------
# 実行結果表示用初期化
egg = "。・゚・(ノД`)・゚・。"
L = []

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

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

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

print "\n# --- 毎回joinで文字連結 ---"
print "実行結果:"+"".join((egg,egg))
print timeit.Timer(stmt_join, setup).repeat(3, 1000000)

結果
# --- +で文字連結 ---
実行結果:。・゚・(ノД`)・゚・。。・゚・(ノД`)・゚・。
[0.065505027770996094, 0.063555002212524414, 0.063560962677001953]

# --- 毎回joinで文字連結 ---
実行結果:。・゚・(ノД`)・゚・。。・゚・(ノД`)・゚・。
[0.16806387901306152, 0.1678011417388916, 0.16774296760559082]
考察
+連結のほうが速いぽいですな(。・ω・。)