欢迎!请参阅关于页面以获取有关如何操作的更多信息。
如果你的代码中有 1. },则生成的代码是
cljs.core.into.call(null,cljs.core.PersistentQueue.EMPTY,cljs.core.PersistentVector.EMPTY)
对于空向量案例,本来可以生成
cljs.core.PersistentQueue.EMPTY
参阅https://github.com/clojure/clojurescript/blob/f289ffee2270567f7976d45012a0a52c38eb6488/src/main/clojure/cljs/tagged_literals.cljc#L21
评论者:colinkahn
这是尝试这样做的一个例子。不清楚测试是否正确。
评论者:mfikes
嗨 Colin。谢谢你的贡献!你签署了CA吗?我没有看到你的名字列在这里https://clojure.org/community/contributors
如果没有,请参阅https://script.clojure.org/community/contributing
迈克,您好
今天早上就做了这件事, emails 中已收到确认。
太好了,我将审查这个补丁。
嗨,Colin,
对于你的第二个测试,你是否可能要检查这个呢?
(instance? PersistentQueue #queue [1 2 3])
关于实际测试补丁,我想到的唯一方法是检查生成的代码。看看由
(binding [*print-fn-bodies* true] (pr-str (fn [] #queue [])))
产生的字符串似乎有一些巧妙的处理,但你可以在产生的字符串中检查是否包含 {{PersistentVector}},如果是,则使测试失败。
是的,确实是要检查类型。奇怪的是,我在测试报告中没有收到失败。我很好奇是否有方法只运行测试集的一部分?
你如何看待使用 with-redefs?
`(with-redefs [into (fn [& _] (throw (ex-info " inadequately created PersistentQueue" {})))] #queue [])`
`
我不知道有办法只运行测试集的一部分。顺便说一下,Travis CI 的构建失败https://travis-ci.org/mfikes/clojurescript/builds/430674720
我确实很喜欢你的 {{with-redefs}} 方法。比我之前的字符串处理要聪明得多。 :)
我已经更新了附带的补丁。
这些测试并未在实际运行时'lein test'中执行,看起来Travis使用 jsc 运行构建和它们。我在本地复制的,不知道是否有命令可以使其更容易。
谢谢。我将检查更新的补丁。这些测试是通过 {{script/test}} 运行的。更多信息请访问 https://script.clojure.org/community/running-tests
补丁1是免费的。
基准测试:1. }
之前
使用V8 [f (fn [] (cljs.core/into cljs.core.PersistentQueue.EMPTY []))]进行基准测试,(f),100000000次运行,442毫秒。使用SpiderMonkey [f (fn [] (cljs.core/into cljs.core.PersistentQueue.EMPTY []))]进行基准测试,(f),100000000次运行,988毫秒。使用JavaScriptCore [f (fn [] (cljs.core/into cljs.core.PersistentQueue.EMPTY []))]进行基准测试,(f),100000000次运行,2041毫秒。使用Nashorn [f (fn [] (cljs.core/into cljs.core.PersistentQueue.EMPTY []))]进行基准测试,(f),100000000次运行,47257毫秒。使用ChakraCore [f (fn [] (cljs.core/into cljs.core.PersistentQueue.EMPTY []))]进行基准测试,(f),100000000次运行,3040毫秒。使用GraalVM [f (fn [] (cljs.core/into cljs.core.PersistentQueue.EMPTY []))]进行基准测试,(f),100000000次运行,296毫秒。
之后
使用V8 [f (fn [] cljs.core.PersistentQueue.EMPTY)]进行基准测试,(f),100000000次运行,0毫秒。使用SpiderMonkey [f (fn [] cljs.core.PersistentQueue.EMPTY)]进行基准测试,(f),100000000次运行,0毫秒。使用JavaScriptCore [f (fn [] cljs.core.PersistentQueue.EMPTY)]进行基准测试,(f),100000000次运行,0毫秒。使用Nashorn [f (fn [] cljs.core.PersistentQueue.EMPTY)]进行基准测试,(f),100000000次运行,-1毫秒。使用ChakraCore [f (fn [] cljs.core.PersistentQueue.EMPTY)]进行基准测试,(f),100000000次运行,-5毫秒。使用GraalVM [f (fn [] cljs.core.PersistentQueue.EMPTY)]进行基准测试,(f),100000000次运行,-1毫秒。
2018年9月19日 6:12 PM CLJS-2916.patch LGTM.
所有测试都通过了,包括Canary测试。鉴于之前的评论,性能看起来很好。
将CLJS-2916.patch添加到补丁Tender (i)