以下是两个测量值:
timeit.timeit('"toto"=="1234"', number=100000000)
1.8320042459999968
timeit.timeit('"toto"=="toto"', number=100000000)
1.4517491540000265
如您所见,比较两个匹配的字符串比比较两个大小相同但不匹配的字符串要快。
这相当令人不安:在字符串比较期间,我认为Python正在逐个字符测试字符串,所以
"toto"=="toto"
测试的时间应该比
"toto"=="1234"
因为它需要四次测试,而非匹配比较则需要一次测试。也许比较是基于散列的,但在这种情况下,两种比较的计时应该相同。
为什么?