我正在使用 Leiningen 在 Clojure 中创建一个项目。我必须对这个项目进行基准测试。我开始明白我必须预热我的 JVM。我已经进行了提前编译,这是否意味着我不必预热我的 JVM?
我知道调用函数 f
例如 100 次会在 JIT 中创建一个热点。
我的基准测试函数 load
将使用给定参数(包括文件路径参数)运行代码一次。目前,我使用相同的参数运行我的函数 load
1000 次,但我将它传递给一个不同的文件路径以存储其结果。完成这 1000 次调用后,我使用正确的文件路径再次执行该函数。
问题是我的基准测试有副作用(将测量结果写入文件)。所以我宁愿在真正运行一次之前不执行它 1000 次。目前我只是给它一个虚拟文件,所以它仍然写入文件,但我放弃了这些结果。
有人可以详细说明我需要注意什么吗?
最佳答案
我推荐使用 Criterium用于对 Clojure 代码进行基准测试。它会处理您询问的问题。运行基准测试需要更长的时间,因为 Criterium 会进行 JVM 预热等,然后多次运行代码,为您提供平均值和其他统计数据。但您可以对结果充满信心。
关于java - 使用提前编译的 JVM 预热,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23584694/