@jterrace wygrywa jeden (1) internet.
W poniższych wymiarach przykładowy kod został skrócony, aby umożliwić testom dopasowanie do jednej linii bez przewijania tam, gdzie to możliwe.
Dla osób niezaznajomionych z timeit
the -s
flag allows you to specify a bit of code which will only be executed once.
najszybszy i najmniej zaśmiecone sposobem jest użycie numpy.fromstring
jak jterrace zasugerował:
python -mtimeit -s"import numpy;s='1|2'" "numpy.fromstring(s,dtype=int,sep='|')"
100000 loops, best of 3: 1.85 usec per loop
Poniższe trzy przykłady użyć string.split
w połączeniu z innym narzędziem.
string.split
z 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
z int()
obsady za pośrednictwem generatora ekspresji
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
z NumPy tablicy typu 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
+1: Zdecydowanie najszybszy jeszcze. – DSM
dlaczego nie myślę o tym ..: P – wim
Dziękuję bardzo .. Dość sprawny od obliczania czasu @bernie .. :) –