2011-11-30 100 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.