python中的计时功能没有给出准确的结果

时间:2010-06-28 12:01:20

标签: python timing

我已经开发了签密方案,我想测试模幂运算所需的时间。我使用以下代码进行签密部分

start = time.clock()
gamma  =    pow(g , x, p)
print ('The value of gamma is : '),gamma
Time_signcrypt = time.clock() - start

对于unsigncryption部分,我正在计算这行代码的时间

start = time.clock()
seed =  (XA + x - XA) 
gamma_new = pow(g , seed, p)
Time_new_gamma = time.clock() - start

问题是使用相同的值,我从两个计时函数得到的结果是不同的。

Signcryption values: 
0.035299674 
0.025940017 

Unsigncryption values: 
0.019342944
0.01727206

值应与两端使用相同参数的相同函数相同。另一个重要的事情是,在非加密部分,一步是额外的,但仍然花费的时间少于签密部分。我无法得到它我已经测试了近35次的错误,结果大多数时间都有所不同:(

请告知我哪里出错?

3 个答案:

答案 0 :(得分:4)

对于时间方法,运行它们多次,直到累计时间至少 10秒,然后将时间除以运行次数。

否则,由于各种原因,时间将非常不准确:

  1. 获取CPU的其他进程
  2. 中断在后台运行
  3. 热效应
  4. 宇宙辐射
  5. 你明白了......; - )

答案 1 :(得分:3)

有一个timeit模块可以完成这种事情。它多次运行您的代码(默认为100万)并报告该运行的统计信息。比试图单次运行更准确,您的代码可能会遇到各种各样的问题。

答案 2 :(得分:1)

由于CPU在不同进程之间不断进行调度,因此每次执行代码时,相同的代码都会花费不同的时间。

第一个函数通常较慢,因为print语句需要“相当长的一段时间”。