0

我正在尝试计算 pow 函数计算指数模所花费的时间。使用硬编码的 g,x,p 值,代码会给出错误,并且将值放在 pow 函数中,代码会挂起。当我使用 time() 和 clock() 来计算这段代码所花费的时间时,同一段代码可以有效地工作。我想要准确性,现在我在使用时钟()和时间()函数进行测试后转移到了 timeit 模块。

该代码适用于较小的值,例如 pow(2, 3, 5),这是有意义的。如何提高使用 timeit 模块计算时间的效率。

另外我是python的初学者,如果代码中有任何愚蠢的错误,请原谅我。

import math
import random
import hashlib
import time
from timeit import Timer

g = 141802876407053547664378835005750805370737584038368838959151050908654130616798415530564917923311706921535439557793280725844349256960807398107370211978304
x = 1207729835787890214
p = 4870352607375058055471602136317178172283784073796673298937466544646468718314482464390112574915498953621226853454222898392076852427324057496200810018794472


t = Timer('pow(g,x,p)', 'import math')

z = t.timeit()
print ('the value of z is: '), z

谢谢

4

1 回答 1

4

这里有两个问题:

  1. 您不能直接从以下位置访问全局变量timeit:请参阅此问题。您可以使用它来修复错误:

    t = Timer('pow(g,x,p)', 'from __main__ import g,x,p')
    

    或者只是将数值直接放在字符串中。

  2. 默认情况下,timeit 模块运行 1000000 次迭代,这将花费很长时间。您可以更改迭代次数,例如:

    z = t.timeit(1000)
    

    这将防止看起来像挂起的情况(但实际上只是一个很长的计算)。

于 2010-06-29T10:18:41.383 回答