Python
Вас может заинтересовать следующее: Анекдот оптимизации , сделанный Гвидо. Хотя стоит также помнить, что это старая статья и она предшествовала существованию таких вещей, как ''. Join
(хотя я думаю, что string.joinfields
более или менее является то же самое)
В силу этого array
модуль может быть самым быстрым, если вы сможете втиснуть в него свою проблему. Но ''. Join
, вероятно, достаточно быстро и имеет то преимущество, что он идиоматичен и, следовательно, его легче понять другим программистам на Python.
Наконец, золотое правило оптимизации: don Не оптимизируйте, если не знаете, что вам нужно, и измеряйте, а не гадайте.
Вы можете измерять различные методы, используя модуль timeit
. Это может сказать вам, какой из них самый быстрый, вместо того, чтобы делать предположения случайным людям в Интернете.
Это зависит от того, что вы делаете.
После Python 2.5 конкатенация строк с оператором + выполняется довольно быстро. Если вы просто объединяете пару значений, лучше всего работает оператор +:
>>> x = timeit.Timer(stmt="'a' + 'b'")
>>> x.timeit()
0.039999961853027344
>>> x = timeit.Timer(stmt="''.join(['a', 'b'])")
>>> x.timeit()
0.76200008392333984
Однако, если вы объединяете строку в цикл, лучше использовать метод объединения списков:
>>> join_stmt = """
... joined_str = ''
... for i in xrange(100000):
... joined_str += str(i)
... """
>>> x = timeit.Timer(join_stmt)
>>> x.timeit(100)
13.278000116348267
>>> list_stmt = """
... str_list = []
... for i in xrange(100000):
... str_list.append(str(i))
... ''.join(str_list)
... """
>>> x = timeit.Timer(list_stmt)
>>> x.timeit(100)
12.401000022888184
. ... но обратите внимание, что вам нужно собрать относительно большое количество строк, прежде чем разница станет заметной.
''. Join (sequenceofstrings)
- это то, что обычно работает лучше всего - самое простое и быстрое.