def is_unique_char(string):
if len(string) > 256:
return True
record = 0L
for ch in string:
# print record
ch_val = ord(ch)
if (record & (1 << ch_val)) > 0:
return False
record |= (1 << ch_val)
return True
import string
s1 = string.ascii_letters + string.digits
if __name__ == '__main__':
import timeit
print is_unique_char(s1)
print timeit.timeit("is_unique_char(s1)",
setup="from __main__ import is_unique_char, s1")
代码如上, is_unique_char 就是一个包含位运算的函数(具体作用不重要)
运行代码, 秒出print is_unique_char(s1)
的结果, 但是timeit测量需要30多秒。 这是为什么呢?会不会是因为位运算? 呃,先感谢大家解答
Pour faire simple,
timeit
exécutera le code1000000
fois..., ce qui bien sûr prend beaucoup de temps.Cette fonction est utilisée pour mesurer le temps d'exécution moyen d'un certain morceau de code, vous devez donc le diviser par le nombre de fois où il est exécuté.
J'ai modifié votre code et je l'ai testé en utilisant
time.time
:Résultat :
4.91142272949e-05 2.89517600536e-05
Le résultat est qu'une seule exécution est presque la même...
Questions auxquelles j'ai répondu : Python-QA
https://docs.python.org/2/library/timeit.html
nombre d'exécutions
默认
number=1000000
默认要跑1000000次当然慢了...