@jterrace vince un (1) Internet.
Nelle misure seguenti il codice di esempio è stato abbreviato per consentire ai test di adattarsi su una riga senza scorrere, ove possibile.
Per chi non ha familiarità con timeit
the -s
flag allows you to specify a bit of code which will only be executed once.
Il modo più veloce e meno ingombra è quello di utilizzare numpy.fromstring
come jterrace suggerito:
python -mtimeit -s"import numpy;s='1|2'" "numpy.fromstring(s,dtype=int,sep='|')"
100000 loops, best of 3: 1.85 usec per loop
I seguenti tre esempi utilizzano string.split
in combinazione con un altro strumento.
string.split
con 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
con int()
Cast tramite generatore-espressione
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
con NumPy array di tipo 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: sicuramente il più veloce ancora. – DSM
perché non ci ho pensato ..: P – wim
Grazie mille .. Abbastanza efficiente dal calcolo del tempo @bernie .. :) –