0

Python の time モジュールを使用して、数値が素数であるかどうかを判断するための 2 つの異なるアルゴリズムの実行時間を比較しようとしています。たとえば、次のようになります。

test = primesComparisonTXT()
start = time.clock()
print 'Fermat Method'
for prime in test:
    print isFermatProbablePrime(prime, 5)
total = time.clock() - start
print total

primesComparisonTXT() は、(1, 1000000) で確認された素数のリストを返す関数です。

isFermatProbablePrime() は、1. 疑わしい素数 2. フェルマーの素数性テストを使用して疑わしい素数の素数性をテストする必要がある回数を示すパラメーターを受け取る関数です。この関数は、容疑者が素数の可能性があるかどうかに応じて、True または False を返します。( http://en.wikipedia.org/wiki/Fermat_primality_test )

アルゴリズムは、そのリスト内のすべての素数が確かに素数の可能性があることを正しく出力しますが、タイミングについては大きく異なる結果が得られます。4.57107920129 は「合計」として出力されますが、Sublime Text はビルドが「[Finished in 15.1s]」であると述べています。Sublime のタイミングはより正確です。この不一致には何か特別な理由がありますか? おそらく、より良いタイミング方法 (timeit) を使用する必要がありますか?

4

2 に答える 2

0

それは、Pythonでタイミングを行う方法ではありません。

timeit モジュールを使用します: http://docs.python.org/2/library/timeit.html

コードを関数にまとめて、次を使用します。

import timeit
timeit.timeit("primefunction()", setup='from mymodule import primefunction')

#or
timeit.timeit(primefunction)
于 2013-07-11T19:03:49.180 に答える