Clojure 2024 状态调查中分享您的想法!

欢迎!请查阅关于页面了解更多有关本网站如何运作的信息。

0
ClojureScript

附带的补丁简化并加速了范围迭代器。

以下函数用于运行基准测试来测试向量迭代:

`
(defn consume-iterator
[v]
(let [iter (-iterator v)]

(loop []
  (when (.hasNext iter)
    (.next iter)
    (recur)))))

`

以下按以下方式设置了“simple-benchmarks”系列

(simple-benchmark [v (into [] (range N))] (consume-iterator v) I)

其中“N”和“I”分别来自下表中的“向量大小”和“迭代次数”列。

|向量大小|迭代次数|V8速度(链接:毫秒)(master)|V8速度(链接:毫秒)(补丁)|JSC速度(链接:毫秒)(master)| JSC速度(链接:毫秒)(补丁)|
| :-- | :-- | :-- | :-- | :-- | :-- | :-- |
|1|100,000|15|11|13|7|
|2|100,000|14|10|7|4|
|4|100,000|18|10|9|5|
|8|100,000|27|12|14|6|
|16|100,000|43|17|19|9|
|32|100,000|74|24|37|15|
|100|100,000|217|59|105|45|
|1000|100,000|2008|524|1032|392|
|10,000|100,000|20390|5856|10249|4178|
|100,000|10,000|20334|5324|10324|4387|

使用的JavaScript引擎版本
V8版本5.1.281.47
JSC版本未知

范围迭代器构造函数ranged-iterator也被设置为私有。

7 答案

0

用户dnolen发表评论:

让我们先提出一个没有更改构造函数的性能更改的补丁。谢谢。

0

用户tmulvaney发表评论:

已经重新合并并移除了构造函数的私有属性。

0

用户dnolen发表评论:

抱歉表达不清楚。即使我们现在没有使用,请也不要修改deftype字段。我们希望在完全不改API的情况下获得性能提升。

0

用户tmulvaney发表评论:

谢谢,这样的话就通了。已经在本次补丁中修复了。

0

评论者:mfikes

将CLJS-1866-updated.patch添加到补丁提交流(i)

0

评论者:mfikes

CLJS-1866-updated.patch通过CI和Canary测试(/)

0
参考:https://clojure.atlassian.net/browse/CLJS-1866(由tmulvaney报告)
...