不太懂官方怎麼命名,
我就先用簡單的名詞代替:
1. format方法
2. 百分比%方法
我比較長用百分比方法,
直到最近工作有人提起才開始考慮到底要用哪種格式
雖然大家都說format方法比較好比較直覺,
但我還是覺得效能才是最優先的,
除非是有特殊需求,因此做了一下測試。
測試方法/結果:
1. timeit.timeit(stmt='_format.format(*_data)', setup='_format="{}:{}";_data=[1,2]', number=10000000)
2.4619
2.timeit.timeit(stmt='_format.format(**_data)', setup='_format="{a}:{b}";_data={"a":1, "b":2}', number=10000000)
2.1808
3.timeit.timeit(stmt='_format % (a, b)', setup='_format="%s:%s";a=1;b=2', number=10000000)
1.5782
4.timeit.timeit(stmt='_format % _data', setup='_format="%(a)s:%(b)s";_data={"a":1, "b":2}', number=10000000)
1.8673
5.timeit.timeit(stmt='_format += a + ":" + b', setup='_format="";a="1";b="2"', number=10000000)
1.3752
6.timeit.timeit(stmt='_format += str(a) + ":" + str(b)', setup='_format="";a=1;b=2', number=10000000)
3.7153
結論:
百分比的效能比較好點,尤其是在編排字串順序的時候。但最近工作有遇到一種狀況是,可以提供客戶自行更改參數順序功能,
這時候反而覺得Format方法真的比較直覺,比較適合外部使用者,
因此最後結論為,若是自行開發需要用到時,最好用百分比,
而需要提供給外界提供格式的話,就採用Format方法。
當然如果真正要非常快的話還是直接字串相加了。
另外我也測試字串相加方法(第5和第6項),
很明顯的第5項效率比起第3項還要快,
但是若牽涉到轉型(數字轉文字)等等問題,
勢必還是要用百分比或是format要有效率多了。
沒有留言:
張貼留言