执行无偏程序/脚本性能比较

2024-05-28 19:36:21 发布

您现在位置:Python中文网/ 问答频道 /正文

< >我想对基本上相同的算法的多个实现进行比较,这些算法是用爪哇、C++和Python编写的,后者使用PyPy、Jython和Cpython在MacOS OS X.4.4MacBook Pro上用普通(非SSD)HDD执行。在

这是一种“从文件中解码数据流”类型的算法,其中相关的度量是总执行时间,我希望通过操作系统、硬盘缓存、同时运行的其他程序、太大/太小的样本文件等来防止偏差。我需要注意些什么来创建一个公平的比较?在


Tags: 算法类型度量os时间macosjythonpypy
3条回答

要做到完全无偏见是不可能的,你可以做各种事情,如运行最小的进程等,但我认为最好的方法是在不同的日子里以随机顺序运行脚本,并得到尽可能接近无偏的平均值。在

因为最终代码将以随机顺序在这样的环境中运行,您对平均行为感兴趣,而不是一些数字。在

这些很难做好。在

在许多情况下,操作系统会缓存文件,因此第二次执行文件时,它们的性能会突然变得更好。在

另一个问题是你在比较解释语言和编译语言。被解释的语言需要一个解释器加载到内存中的某个地方,否则它们无法运行。为了公平起见,您真的应该考虑内存使用和解释器的加载时间是否应该是测试的一部分。如果您希望在这样一个环境中寻找性能,在这种环境中您可以假定总是预加载解释器,那么您可以忽略它。web服务器的许多设置都能够保持预加载的解释器。如果您在桌面上执行特别的客户机应用程序,那么在加载解释器时启动可能会非常慢。在

我建议您只需将每个程序运行多次(大约20次左右),并取每组中最低的测量值。这将使它非常有可能,程序将使用高清缓存和其他类似的东西。如果他们都这么做,那就没有偏见。在

相关问题 更多 >

    热门问题