python相等运算符的时间开销变化

python相等运算符的时间开销变化,python,performance,optimization,time,operation,Python,Performance,Optimization,Time,Operation,在我的白痴中,我在摆弄等式运算符和python的时间模块——主要关心是否应该将类的一部分存储为字符串或整数等,如果它们更容易多次检查等式,我的“测试”结果如下 正在运行以下代码(编写得很糟糕): 给了我以下结果: --- 0.061007022857666016 seconds --- --- 0.060822486877441406 seconds --- 其次是: --- 0.06118488311767578 seconds --- --- 0.05800366401672363 sec

在我的白痴中,我在摆弄等式运算符和python的时间模块——主要关心是否应该将类的一部分存储为字符串或整数等,如果它们更容易多次检查等式,我的“测试”结果如下

正在运行以下代码(编写得很糟糕):

给了我以下结果:

--- 0.061007022857666016 seconds ---
--- 0.060822486877441406 seconds ---
其次是:

--- 0.06118488311767578 seconds ---
--- 0.05800366401672363 seconds ---
现在引发了多个问题,主要是:为什么检查整数和字符串是否相等的速度会有差异?最重要的是,为什么执行完全相同的任务之间会有差异

更让我困惑的是:

def main1():
    for x in [1 for y in range(1000000)]:
        x == 123
def main2():
    for x in ['1' for y in range(1000000)]:
        x == '123'
import time
start_time = time.time()
main1()
print("--- %s seconds ---"%(time.time()-start_time))
start_time = time.time()
main2()
print("--- %s seconds ---"%(time.time()-start_time))
--- 0.05814766883850098 seconds ---
--- 0.05800318717956543 seconds ---
返回以下内容:

def main1():
    for x in [1 for y in range(1000000)]:
        x == 123
def main2():
    for x in ['1' for y in range(1000000)]:
        x == '123'
import time
start_time = time.time()
main1()
print("--- %s seconds ---"%(time.time()-start_time))
start_time = time.time()
main2()
print("--- %s seconds ---"%(time.time()-start_time))
--- 0.05814766883850098 seconds ---
--- 0.05800318717956543 seconds ---

见鬼!?3位数字/3个长字符串比1位字符串的时间成本更短?!为什么?

您正在测量墙上的时钟时间-您的计算机在某些运行中可能会或多或少忙碌。与正在运行的整个代码相比,您正在度量的任务非常小。这种变化可以忽略不计。您可能需要查看
timeit
模块。