@ jterrace выигрывает один (1) интернет.
В приведенных ниже измерениях пример кода был сокращен, чтобы позволить тестам поместиться на одной строке без прокрутки, где это возможно.
Для тех, кто не знаком с timeit
, флаг -s
позволяет вам указать бит кода, который будет выполняться только один раз .
Самый быстрый и наименее перегруженный способ - использовать numpy.fromstring
в соответствии с рекомендациями jterrace:
python -mtimeit -s"import numpy;s='1|2'" "numpy.fromstring(s,dtype=int,sep='|')"
100000 loops, best of 3: 1.85 usec per loop
В следующих трех примерах используется string.split
в сочетании с другим инструментом.
string.split
с numpy.fromiter
python -mtimeit -s"import numpy;s='1|2'" "numpy.fromiter(s.split('|'),dtype=int)"
100000 loops, best of 3: 2.24 usec per loop
string.split
с int()
приведением через выражение-генератора
python -mtimeit -s"import numpy;s='1|2'" "numpy.array(int(x) for x in s.split('|'))"
100000 loops, best of 3: 3.12 usec per loop
string.split
с массивом NumPy типа int
python -mtimeit -s"import numpy;s='1|2'" "numpy.array(s.split('|'),dtype=int)"
100000 loops, best of 3: 9.22 usec per loop