评论由:mfikes发表
由于 CLJ-1789 补丁对较大的映射效果更好,这里有一个额外的性能测试,该测试覆盖了该案例,使用了该票据的数据,测试了我在帖子中附加的原始补丁和 Erik 的后续补丁。您可以看到 CLJ-1789 方法对 ClojureScript 也是有益的。
Erik,我看到您附加了一个第三个补丁。我建议在每次这样的补丁中添加性能数字,以便可以更轻松地评估补丁在高级优化下的效果。
`
引擎关键字-identical? CLJ-1789
V8: 1.13 1.29
SpiderMonkey: 1.89 2.39
JavaScriptCore: 1.02 0.96
Nashorn: 1.12 1.42
ChakraCore: 1.68 1.82
`
之前
`
使用V8进行基准测试
;; test select-keys
[m {:a "b", :c "d", :b "b", :d "d", :e "e", :f "f", :g "g"}], (select-keys m [:a :c :b :d :e :f :g]), 200000 次运行, 373 毫秒
使用SpiderMonkey进行基准测试
;; test select-keys
[m {:a "b", :c "d", :b "b", :d "d", :e "e", :f "f", :g "g"}], (select-keys m [:a :c :b :d :e :f :g]), 200000 次运行, 668 毫秒
使用JavaScriptCore进行基准测试
;; test select-keys
[m {:a "b", :c "d", :b "b", :d "d", :e "e", :f "f", :g "g"}], (select-keys m [:a :c :b :d :e :f :g]), 200000 次运行, 200 毫秒
使用Nashorn进行基准测试
;; test select-keys
[m {:a "b", :c "d", :b "b", :d "d", :e "e", :f "f", :g "g"}], (select-keys m [:a :c :b :d :e :f :g]), 200000 次运行, 2236 毫秒
使用ChakraCore进行基准测试
;; test select-keys
[m {:a "b", :c "d", :b "b", :d "d", :e "e", :f "f", :g "g"}], (select-keys m [:a :c :b :d :e :f :g]), 200000 次运行, 1074 毫秒
`
关键字-identical? 之后
`
使用V8进行基准测试
;; test select-keys
[m {:a "b", :c "d", :b "b", :d "d", :e "e", :f "f", :g "g"}], (select-keys m [:a :c :b :d :e :f :g]), 200000 次运行, 330 毫秒
使用SpiderMonkey进行基准测试
;; test select-keys
[m {:a "b", :c "d", :b "b", :d "d", :e "e", :f "f", :g "g"}], (select-keys m [:a :c :b :d :e :f :g]), 200000 次运行, 353 毫秒
使用JavaScriptCore进行基准测试
;; test select-keys
[m {:a "b", :c "d", :b "b", :d "d", :e "e", :f "f", :g "g"}], (select-keys m [:a :c :b :d :e :f :g]), 200000 次运行, 197 毫秒
使用Nashorn进行基准测试
;; test select-keys
[m {:a "b", :c "d", :b "b", :d "d", :e "e", :f "f", :g "g"}], (select-keys m [:a :c :b :d :e :f :g]), 200000 次运行, 1991 毫秒
使用ChakraCore进行基准测试
;; test select-keys
[m {:a "b", :c "d", :b "b", :d "d", :e "e", :f "f", :g "g"}], (select-keys m [:a :c :b :d :e :f :g]), 200000 次运行, 640 毫秒
`
CLJ-1789 之后
`
使用V8进行基准测试
;; test select-keys
[m {:a "b", :c "d", :b "b", :d "d", :e "e", :f "f", :g "g"}], (select-keys m [:a :c :b :d :e :f :g]), 200000 次运行, 290 毫秒
使用SpiderMonkey进行基准测试
;; test select-keys
[m {:a "b", :c "d", :b "b", :d "d", :e "e", :f "f", :g "g"}], (select-keys m [:a :c :b :d :e :f :g]), 200000 次运行, 279 毫秒
使用JavaScriptCore进行基准测试
;; test select-keys
[m {:a "b", :c "d", :b "b", :d "d", :e "e", :f "f", :g "g"}], (select-keys m [:a :c :b :d :e :f :g]), 200000 次运行, 209 毫秒
使用Nashorn进行基准测试
;; test select-keys
[m {:a "b", :c "d", :b "b", :d "d", :e "e", :f "f", :g "g"}], (select-keys m [:a :c :b :d :e :f :g]), 200000 次运行, 1578 毫秒
使用ChakraCore进行基准测试
;; test select-keys
[[m {:a "b", :c "d", :b "b", :d "d", :e "e", :f "f", :g "g"}], (select-keys m [:a :c :b :d :e :f :g]), 200000 次运行,591 毫秒
`