IronPython の文字列は str でもあり System.String でもある。
つまり += で文字列結合ができる。
+ と += って結合速度に違いがあるのかな?
そう思って StringBuilder も含めてテストしてみた。
# -*- coding: UTF-8 -*-
"""
Benchmark Decorators
"""
from System import *
from System.Diagnostics import Stopwatch
from System.Text import StringBuilder
def bench(func):
def wrapper(count):
sw = Stopwatch.StartNew()
for i in range(count):
func(count)
print sw.Elapsed
return wrapper
s = ""
t = ""
sb = StringBuilder()
@bench
def plfunc(count):
global s
s = s + "a"
@bench
def eqfunc(count):
global t
t += "a"
@bench
def sbfunc(count):
sb.Append("a")
plfunc(100000)
eqfunc(100000)
sbfunc(100000)
ちょっと強引なコードだけどデコレータを使ってみたかっただけ。
結果、もちろん 1.2GHz CULV マシンでの結果ですので性能チェックにもどうぞ。
00:00:40.2863338 00:00:39.7391895 00:00:00.1128512
ほとんど誤差の範囲です、処理は += も + とどうやら同じようです。
てゆーかやはり StringBuilder を利用しろという結論でした。
