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 的哪个版本?一些错误已在最近非最新版本中得到修复。最新的版本可以在本地的 README 中的“已发布版本”链接中找到: https://github.com/clojure/core.rrb-vector/

如果您能用最新版本重现这个问题,我会很感兴趣知道如何这样做。这个库中至少还有一个已知的错误,我不知道怎么修复,但是如果有其他我没有看到的,我也不会感到太惊讶。

by
哇,谢谢您的回答。我现在正在使用最新版本0.1.2。如果您希望我尝试以前的版本,我很愿意。目前,我可以用下面这段代码重现问题。对于我糟糕的代码,请见谅;)

您通过第94行进入注释块即可重现,需要一点时间。 https://github.com/mattdamon108/first-clojure/blob/master/aoc201809.clj
by
我相信最新版本中bug最少,所以不建议尝试旧版本。我在自己的系统上成功复现了bug。看到您的代码时我有点好笑,因为core.rrb-vector之前的一个bug报告也是关于弹珠游戏的,可能是有人编写代码来解决您现在正在解决的2018年圣诞节的第9个问题。那个较早的bug已经被修复,但您似乎发现了另一个我未见过的bug。

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

我有一个基于B树而非RRB树编写类似库的想法,但我主要是一个花费了大量时间和精力思考和撰写的想法,我还没有写出代码,所以这个方法在您喜欢编写此类库的情况下才能帮助到您。

同时,有一个包含io.lacuna.bifurcan.List类的Java库,它可能比core.rrb-vector有更少的bug,但对此没有承诺:https://github.com/lacuna/bifurcan
by
首先,我很高兴我因为错误地使用这个库而遇到这个错误,同时也很高兴能够报告这个新发现的bug。

希望这个问题能尽快解决。我真的希望无顾虑地使用这个库。实际上,我对计算性能非常满意。

谢谢您让我知道另一个库io.lacuna.bifurcan.List。我会尝试它的。

再次感谢您的工作!
+1

仅此通知,这是提问的正确位置,如果需要,我们将在内部 jira 系统中创建问题。

感谢您的信息!
...