2011-11-30 99 views
4

我想製作一個簡單的腳本來測試計算機執行它的時間。 我已經用PyQt構建它,並使用QTimer做了一個有趣的循環。現在我需要「忙碌」部分。我可以使用什麼樣的命令來使計算機工作一點,以便我可以節省時間並與其他計算機進行比較?用簡單的Python腳本測試計算機處理速度

這裏是我的代碼,這樣就可以更好地理解:

self.Tempo = QtCore.QTimer(None) 
self.Cron = QtCore.QTime(0,0,0,0) 

def begin(): 
    self.Cron.start() 
    self.Tempo.singleShot(999, update)  
def update(): 
    if self.lcdNumber.value() == 10: 
     finish()     
    else: 
     self.lcdNumber.display(self.lcdNumber.value()+1) 
     #Here I want to make some processing stuff    
     self.Tempo.singleShot(999, update) 
def finish(): 
    print("end") 
    took = self.Cron.elapsed()/1000 
    print("took: {0} seconds" .format(str(took))) 
    self.lcdNumber_2.display(took) 
+1

請記住,無論您選擇哪種操作,用於運行基準測試的Python版本都可能是您獲得的計時的重要因素。 – NPE

+0

我的意圖是用cx_Freeze凍結它,然後在Windows中運行它。如果我總是使用相同的冷凍包裝,那麼時機應該繼續,我說得對嗎? –

+1

如果運行基準測試所需的一切都在凍結包內,那麼是的。 – NPE

回答

3

你可以做任何一個循環中的複雜計算問題:

  • 計算一些大數的因子(易於實現)
  • 計算鏈SHA1哈希值100萬次(很容易實現)
  • 反轉大矩陣(不那麼容易實現)
  • ...

其中的一些使用問題CPU(階乘,SHA1),其他一些 - CPU和內存(矩陣反轉)。所以首先你需要確定你想要基準測試哪部分電腦。

+0

謝謝@werewindle。我對推動內存的功能特別感興趣,但也可以使用CPU。你能給我舉一些例子或者一些鏈接,我可以更多地瞭解這種特定的計算方法嗎? –

+0

您可以使用numpy生成巨大的隨機矩形矩陣(如10 000x10 000),然後計算逆矩陣。這將有效地強調CPU和內存總線。 – werewindle

+0

我決定連續創建一組10個測試。其中一人讀取一個巨大文件的所有單詞並用hashlib編碼,另一個迭代和計算大範圍的整數。還有一個與你的建議,使用numpy創建隨機矩陣,計算它們,乘以它們並使用所有我可以的功能。它工作得很好,個人電腦花了幾秒鐘的時間。我仍然在考慮其他測試來完成該設置,但是您的建議非常好,謝謝。 (經過很多測試,我的電腦比一個slu slower慢,所以我猜它確實達到了目標)。 –

1

通常你可以實現與一個循環,做一些簡單的工作,這樣的事情:

lst = [] 
for i in range(1000000): 
    lst.append('x') 
+0

謝謝你的回答。我期待一些更粗糙的東西。也許更多,然後只是一個測試,你知道。 –

1

除了將一些元素附加到列表中,您可以添加字符串。我猜,字符串串聯越大,字符串越大,這應該會測試你的內存性能。

test = "a test string" 
for i in range(your_value):  # it takes forever, so choose this value wisely! 
    if len(test) < 200000000:  # somewhere above this limit I get errors 
     test += test 
    else: 
     test = test[0:len(test)/2] # if the string gets too long just cut it.