В настоящее время я обрабатываю такие разделы строки:
for (i, j) in huge_list_of_indices:
process(huge_text_block[i:j])
Я хочу избежать накладных расходов на создание этих временных подстрок. Есть идеи? Возможно, обертка, которая каким-то образом использует смещения индекса? В настоящее время это мое узкое место.
Обратите внимание, что process () - это еще один модуль python, который ожидает на входе строку.
Edit:
Некоторые люди сомневаются в наличии проблемы. Вот несколько примеров результатов:
import time
import string
text = string.letters * 1000
def timeit(fn):
t1 = time.time()
for i in range(len(text)):
fn(i)
t2 = time.time()
print '%s took %0.3f ms' % (fn.func_name, (t2-t1) * 1000)
def test_1(i):
return text[i:]
def test_2(i):
return text[:]
def test_3(i):
return text
timeit(test_1)
timeit(test_2)
timeit(test_3)
Вывод:
test_1 took 972.046 ms
test_2 took 47.620 ms
test_3 took 43.457 ms