评论者: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毫秒
`