Ja. Das timeit
Modul in der Standardbibliothek ist, wie Sie diese Dinge überprüfen. Z. B:
AmAir:stko aleax$ python -mtimeit -s'def isodd(x): x & 1' 'isodd(9)'
1000000 loops, best of 3: 0.446 usec per loop
AmAir:stko aleax$ python -mtimeit -s'def isodd(x): x & 1' 'isodd(10)'
1000000 loops, best of 3: 0.443 usec per loop
AmAir:stko aleax$ python -mtimeit -s'def isodd(x): x % 2' 'isodd(10)'
1000000 loops, best of 3: 0.453 usec per loop
AmAir:stko aleax$ python -mtimeit -s'def isodd(x): x % 2' 'isodd(9)'
1000000 loops, best of 3: 0.461 usec per loop
Wie Sie sehen, auf meinem (ersten Tag == == alt langsam ;-) Macbook Air, die &
Lösung ist wiederholbar zwischen 7 und 18 ns schneller als die %
Lösung.
timeit
sagt Ihnen nicht nur, was schneller ist, sondern davon, wie viel (nur die Tests ein paar Mal laufen), die in der Regel zeigt, wie höchst unwichtige es (tun Sie wirklich Pflege etwa 10 ns Unterschied, wenn der Kopf der Aufruf der Funktion ist etwa 400?! -) ...
Überzeugende Programmierer, dass Mikro-Optimierungen im Wesentlichen irrelevant sind, hat sich als eine unmögliche Aufgabe erwiesen - obwohl es 35 Jahre ist (über die Computer haben Bestellungen von Betrag schneller!) seit Knuth wrote
Wir sollten über kleine Wirkungsgrade vergessen, sagen etwa 97% der Zeit: vorzeitige Optimierung ist die Wurzel aller Übel.
was wie er erklärt ist ein Zitat aus einer noch älteren Aussage von Hoare. Ich denke jeder ist total davon überzeugt, dass IHR Fall in die restlichen 3% fällt!
Also anstatt endlos zu wiederholen "es ist egal", setzen wir (Tim Peters insbesondere verdient die Ehrungen dort) in das Standard-Python-Bibliotheksmodul timeit
, das macht es einfach, solche Mikro-Benchmarks und damit zu messen lets mindestens einige Programmierer überzeugen sich, dass, hmmm, ist dieser Fall fällt in die 97% Gruppe! -)
Was ist mit "und True oder False"? – FogleBird
Wenn Sie versuchen, ein boolesches Ergebnis zu erhalten, tun Sie einfach bool (num & 1) – FogleBird
Ich benutze Python 3.1 – riza