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

欢迎!有关如何使用本站点的更多信息,请参阅 关于 页面。

0
ClojureScript

附带的补丁简化并加快了 RangedIterator。

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

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

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

`

以下是“简单基准”的一些设置

(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 版本未知

RangedIterator 构造函数 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)
...