gpt4 book ai didi

clojure - Microbenchmark Clojure 函数

转载 作者:行者123 更新时间:2023-12-04 17:00:26 26 4
gpt4 key购买 nike



assoc 这样的小型 Clojure 函数有多快?我怀疑 assoc在 100ns 到 3us 范围内运行,这使得计时变得困难。

使用 time

user=> (def d {1 1, 2 2})
#'user/d
user=> (time (assoc d 3 3))
"Elapsed time: 0.04989 msecs"
{1 1, 2 2, 3 3}

那里显然有很多开销,所以我不相信这个基准。 friend 指给我 Criterium它处理了很多基准测试的痛苦(多次评估、预热 JVM、GC 参见 How to benchmark functions in Clojure?)。

使用 Criterium
可悲的是,在如此小的基准上,甚至 Criterium 似乎都失败了
user=> (use 'criterium.core)
nil
user=> (def d {1 1 2 2})
#'user/d
user=> (bench (assoc d 3 3))
WARNING: JVM argument TieredStopAtLevel=1 is active, and may lead to unexpected results as JIT C2 compiler may not be active. See http://www.slideshare.net/CharlesNutter/javaone-2012-jvm-jit-for-dummies.
WARNING: Final GC required 1.694448681330372 % of runtime
Evaluation count : 218293620 in 60 samples of 3638227 calls.
Execution time mean : -15.677491 ns
Execution time std-deviation : 6.093770 ns
Execution time lower quantile : -20.504699 ns ( 2.5%)
Execution time upper quantile : 1.430632 ns (97.5%)
Overhead used : 123.496848 ns

以防万一你错过了,这个操作平均需要 -15ns。我知道 Clojure 非常神奇,但负运行时间似乎好得令人难以置信。

重复问题

真的, assoc 需要多长时间拿?如何在 Clojure 中对微操作进行基准测试?

最佳答案

关于clojure - Microbenchmark Clojure 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22867291/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com