python - 执行时间不一致

标签 python performance time

我正在对我创建的函数进行计时,但得到的结果不一致。由于我使用 time.time(),我习惯于报告的时间有一些小的变化,但我的计时数据似乎是双峰的,我不明白。

我的功能:

def sorteddups(listA,listB,key=None, equal=lambda x,y:x==y,greater=lambda x,y:x>y,mode=3):#mode: 0=AB, 1=Aonly, 2=Bonly, 3=[Aonly,Bonly,AB]
A=sorted(listA,key=key)
B=sorted(listB,key=key)
AB=[]
dupA=set()
dupB=set()
j=0
for i,a in enumerate(A):
    try:
        while greater(a,B[j]):j+=1
        if equal(a,B[j]):
            AB.append([a,B[j]])
            dupA.add(i)
            dupB.add(j)
    except:pass
if mode==1 or mode==3:Aonly=[a for i,a in enumerate(A) if i not in dupA]
if mode==2 or mode==3:Bonly=[b for i,b in enumerate(B) if i not in dupB]
return AB if mode==0 else Aonly if mode==1 else Bonly if mode==2 else [Aonly,Bonly,AB]

我的结果:

>>> t=time()
>>> test3=sorteddups(test,test2)
>>> time()-t
0.836998701095581
>>> t=time()
>>> test3=sorteddups(test,test2)
>>> time()-t
1.2330021858215332
>>> t=time()
>>> test3=sorteddups(test,test2)
>>> time()-t
1.2690012454986572
>>> t=time()
>>> test3=sorteddups(test,test2)
>>> time()-t
0.8360021114349365
>>> t=time()
>>> test3=sorteddups(test,test2)
>>> time()-t
1.2589986324310303
>>> t=time()
>>> test3=sorteddups(test,test2)
>>> time()-t
0.8310055732727051
>>> t=time()
>>> test3=sorteddups(test,test2)
>>> time()-t
1.2420125007629395

知道什么会导致执行时间的这种双峰分布吗?

编辑:以下是您可以运行的一些测试代码:

import random
import string
from time import time
test=[[''.join(random.choice(string.ascii_lowercase) for i in range(150)),[random.randint(1,1000) for _ in range(4)],random.random()] for _ in range(200000)]
test2=test
for _ in range(10):
    t=time()
    test3=sorteddups(test,test2)
    print(time()-t)

编辑: 我昨天在我的机器和同事的机器上测试了这个。两者都会产生明显的双峰结果。今天的结果对我们俩来说都是正常的。我唯一的猜测是有一个系统范围的更新,但我的计算机没有重新启动。如果有人有一个理论,我很想听听在不同的机器上可能导致这种情况的原因,然后第二天在两台机器上停止而不重新启动。将问题标记为已回答。

最佳答案

我进行了测试并得到了更一致的结果。我认为它与它运行的机器的资源有关。

结果:

1.9347724914550781
1.9128038883209229
1.9010097980499268
1.948140277862549
1.9257290363311768
1.9285156726837158
1.9264476299285889
1.9322516918182373
1.9303538799285889
1.931032419204712

关于python - 执行时间不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59757485/

相关文章:

python - Geodjango:使用迁移将现有数据的 PolygonField 更改为 MultiPolygonField

python - 如何有效地按元素评估整个 Python 函数列表?

performance - 如何开始性能测试

php - Mysql timediff返回两个不同的值

time - 获取 time.Time 月份的最后一天

time - redis:EVAL 和 TIME

javascript - Ajax 文件上传 Django

python - 从 tf.tensor 的一个操作中提取多列

python - 将动态数量的字段添加到 Django 管理表单

c++ - 为什么在窗口模式下此 SDL 代码中的运动会出现抖动