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

欢迎!请参阅 关于 页面以了解此工作的更多信息。

0
core.rrb-vector

我在玩 aoc2018 d9 时遇到了这个错误。这个错误似乎出现在向量大约超过 2M 个项目时。

Execution error (ArrayIndexOutOfBoundsException) at clojure.core.rrb-vector.rrbt/slice-left$fn (rrbt.clj:393).
Index 33 out of bounds for length 33

      rrbt.clj:  393  clojure.core.rrb-vector.rrbt/slice-left/fn
      rrbt.clj:  392  clojure.core.rrb-vector.rrbt/slice-left
      rrbt.clj:  375  clojure.core.rrb-vector.rrbt/slice-left
      rrbt.clj: 1098  clojure.core.rrb-vector.rrbt.Vector/slicev
rrb_vector.clj:   83  clojure.core.rrb-vector/subvec
rrb_vector.clj:   73  clojure.core.rrb-vector/subvec

我找不到 GitHub 中的问题页面,因此我想在这里留下一个问题以寻求帮助。

2 个答案

+1

被选择
 
最佳答案

您正在使用 core.rrb-vector 的哪个版本?一些错误已在最近发布的版本中修复。最新的发布版本可以在本地的“已发布版本”链接中找到: https://github.com/clojure/core.rrb-vector/

如果您能够用最新版本重现这个问题,我会很高兴了解如何做到这一点。这个库中仍然至少有一个已知的错误我不确定如何修复,但我不会对还有其他我没有看到的错误感到惊讶。

哇,非常感谢你的回答。我实际上正在使用最新版本0.1.2。如果你想让我尝试旧版本,我很乐意做。目前,我可以用下面的代码重现这个问题。抱歉我的代码很糟糕 ;)

您可以通过在注释块中的第94行复制这个问题,它运行需要一些时间。 https://github.com/mattdamon108/first-clojure/blob/master/aoc201809.clj
我相信最新版本的问题最少,所以我不建议尝试使用旧版本。我在我的系统上能够重现这个错误。阅读你的代码时我有点好笑,因为core.rrb-vector之前的一个错误报告也是关于一个弹珠游戏,而且可能是有人编写代码来解决你正在解决的相同的2018年圣诞代码问题#9。那个早期的错误被修复了,但你似乎挖掘出了我没有见过的另一个错误。

坦白说,我对能否找出让core.rrb-vector既正确又能达到RRB树声称的运行时间的办法有点怀疑。

我有一个基于B树而不是RRB树的类似库的想法,但这个想法主要是我花了大量时间思考和写出来的,但我还没有写代码,所以这个方法不会帮助你,除非你喜欢编写这样的库。

同时,有一个包含类io.lacuna.bifurcan.List的Java库,它可能比core.rrb-vector有更少的错误,但在这方面没有承诺:《a https://github.com/lacuna/bifurcan
首先,我很高兴知道我遇到了这个错误,因为我没有正确使用这个库,也很高兴能报告一个发现的错误。

我希望这个问题很快就能得到解决。我真的希望在没有担忧的情况下使用这个库。事实上,我对计算的性能非常满意。

感谢你让我知道另一个库io.lacuna.bifurcan.List。我会尝试一下。

再次感谢你的工作!
+1
by

仅供了解,这是询问此问题的正确位置,如果需要,我们将在内部jira系统中记录问题。

by
感谢您的信息!
...