簡體   English   中英

python中的計時功能無法提供准確的結果

[英]Timing function in python not giving accurate result

我已經開發了一種用於簽密的方案,我想測試模塊化求冪的時間。 我正在將以下代碼用於簽密部分

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次,並且大多數時候結果都不同:(

請指教我哪里出問題了?

要對方法計時,請多次運行它們,直到累計時間至少為 10秒,然后將時間除以運行次數。

否則,由於各種原因,時間安排將非常不准確:

  1. 其他獲取CPU的進程
  2. 中斷在后台運行
  3. 熱效應
  4. 宇宙輻射
  5. 你明白了.. ;-)

有一個timeit模塊可以完成這種事情。 它會多次運行您的代碼(默認情況下為100萬次),並報告該次運行的統計信息。 比嘗試計時單個運行要准確得多,在這種情況下,您的代碼可能會遇到各種各樣的問題。

由於CPU在不同進程之間不斷調度,因此每次執行同一段代碼都會花費不同的時間。

通常,第一個函數會變慢,因為有print語句,這需要“相當多”的時間。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM