由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进行基准测试
;; 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进行基准测试
;; 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进行基准测试
;; 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进行基准测试
;; 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进行基准测试
;; 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毫秒
`
(keyword-identical?)之后
`
使用V8进行基准测试
;; 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进行基准测试
;; 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进行基准测试
;; 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进行基准测试
;; 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进行基准测试
;; 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进行基准测试
;; 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进行基准测试
;; 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进行基准测试
;; 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进行基准测试
;; 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进行基准测试
;; 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毫秒
`