1

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

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

这些值应该相同,因为在两端应用相同的函数并具有相同的参数。另一件重要的事情是,在 unsigncryption 部分,增加了一个步骤,但所花费的时间仍然少于 signcryption 部分。我不明白出了什么问题我已经测试了近 35 次,结果大部分时间都不同:(

请指教我哪里出错了?

4

3 回答 3

4

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

否则,由于各种原因,时间会很不准确:

  1. 其他获得 CPU 的进程
  2. 在后台运行的中断
  3. 热效应
  4. 宇宙辐射
  5. 你明白了.. ;-)
于 2010-06-28T12:05:29.577 回答
3

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

于 2010-06-28T12:08:27.563 回答
2

因为 CPU 不断在不同进程之间进行调度,所以每次执行同一段代码都会花费不同的时间。

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

于 2010-06-28T12:08:20.073 回答