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多秒。 这是为什么呢?会不会是因为位运算? 呃,先感谢大家解答
Ringkasnya,
timeit
akan melaksanakan kod1000000
kali..., yang sudah tentu mengambil masa yang lama.Fungsi ini digunakan untuk mengukur purata masa berjalan bagi sekeping kod tertentu, jadi anda mesti membahagikannya dengan bilangan kali ia dilaksanakan.
Saya menukar kod anda dan mengujinya menggunakan
time.time
:Hasil:
Hasilnya ialah satu larian adalah hampir sama...
Soalan yang saya jawab: Python-QA
https://docs.python.org/2/library/timeit.html
bilangan pelaksanaannombor=1000000
默认
默认要跑1000000次当然慢了...