2010-06-28 122 views
1

我已经开发了一个签密方案,我想测试模块幂运算所花费的时间。我使用下面的代码签密部分python中的计时函数没有给出准确的结果

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

和签密的部分我正在计算与这行代码所花费的时间

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次,结果各不相同大部分的时间:(的

请咨询我要去哪里错了?

+0

我问了一个类似的问题,关于[准确的时间戳]在Python中可能是有用的(http://stackoverflow.com/questions/157359/accurate-timestamping-in-python)。 – 2010-06-28 12:16:35

回答

4

要时间的方法,运行它们很多次,直到累积时间是至少 10秒钟,然后由运行的次数除以时间

否则,定时会因为各种原因非常不准确的:其获取CPU

  1. 其它工艺
  2. 中断在后台运行
  3. 热效应
  4. 宇宙辐射
  5. 你的想法.. ;-)
+0

,可以请你给我提供这个理由,因为我只计算一个简单的pow()函数的时间,它的只有一行和相同的事情发生在未签名的部分,但两个输出都不一样。签密和非签名的值也会有很大的差异,但是每个签密/非签名部分的值都更接近。 我一直在测试的价值,因为早晨现在n没有运气:S :( – fahad 2010-06-28 12:16:27

+0

好吧我现在有一个想法,感谢更新:) – fahad 2010-06-28 12:17:08

1

由于CPU的经常是不同进程之间调度,同一段代码将花费不同的时间,每次执行。

由于print语句需要“相当多的”时间,所以第一个函数通常会比较慢。

3

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

相关问题