我写了一个脚本并在不同的机器上运行它。脚本如下所示
def f(n):
x = None
while n:
x = simple_math(n)
n -= 1
return x
start = now()
f(BIGNUM)
print now() - start
在脚本结束时,它会打印完成所需的时间。这是否足以将简单Python脚本的实用CPU速度与不同的机器进行比较?
简单来说,我的意思是它不使用多处理模块或任何其他技术来利用多核机器。
这个问题不关于
只是我想确定我的方法是否理解机器之间的CPU性能是相当正确的。
答案 0 :(得分:5)
所有无数现有基准测试有什么问题?更复杂的可能性更强一些。天真的方法的主要问题我 - 我不是这个主题的专家,请注意 - 可以发现:
但是,由于您的要求似乎只是“对CPU速度的粗略估计,完全意识到除了将CPU速度提高到数量级之外,这些数字不能用于任何事情,因此必须采取一点点的措施然后,不要告诉任何真正的应用程序的实际性能“,它可能没关系 - 只是不要认为它接近准确。尽管如此,为什么不使用一个强化的基准测试套件,已经付出了一些努力来减轻这些问题(而不是删除 - 没有人可以做到这一点)?
另请注意,timeit
stdlib模块比手动操作秒表更容易使用,并尝试(不是太难,但这是一个开始)通过我提到的方法修复第二点。
答案 1 :(得分:1)
您可以通过使用这些类型的方法获得一个粗略的想法。但这不是准确的衡量标准。脚本的执行时间将取决于CPU速度以外的许多其他因素,如使用的操作系统和解释器版本,当前系统负载,内存速度等。我的建议不是依赖于此。
编辑:只是一个注释。在性能方面,许多人只考虑CPU速度,但实际上性能可能会受到系统中几乎所有内容的阻碍。例如,你有一个高速CPU但RAM很低(无论是在大小和速度上),那么你将无法提升CPU的性能。答案 2 :(得分:1)
本质上:不。
基准测试是一个非常困难的问题,通常不值得自己解决。这一切都取决于你关心的原因。你的方法肯定会给出一个非常粗略的估计,即系统A是否优于系统B,但实际上只有在结果大不相同的时候。
您要做的是确定Real World Application X将如何在不同的计算机上执行。很少有真实世界的应用程序由简单数学循环近似。即使它(主要是科学计算),你最好在实际程序上测量时间。
真实世界的应用程序通常是非线性的,难以测量和模拟。它真的是其中一个问题已经被其他人解决得比你自己合理解决的问题要好得多。
如果您想要对性能进行粗略估计,请务必按照您的方式进行。只是不要过分相信结果,因为它们将远离你所谓的“科学”
答案 3 :(得分:0)
如果我理解你的意图正确(你可以澄清一点 - 你究竟要测量或估计的是什么,处理器速度,代码速度,其他东西和目的,但如果我理解你的话)为什么不在timeit
中检查它是如何完成的