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

欢迎!请参阅 关于 页面以了解更多有关如何使用本网站的信息。

0
core.rrb-vector

我在玩耍 aoc2018 d9 时遇到了这个错误。这个错误似乎出现在向量大约超过 200 万项的时候。

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 的哪个版本?一些在过去版本中已修复的 bug。最新版本可以在以下位置的 README 中的 "已发布版本" 链接找到:https://github.com/clojure/core.rrb-vector/

如果您可以使用最新版本重现此问题,我会很乐意了解如何。该库中还有一些已知的 bug,我不确定如何修复,但我不太惊讶还会有其他我没有见过的 bug。

太感谢你的回答了。我现在实际上在使用最新版本0.1.2。如果你想让我试试之前的版本,我也非常乐意。目前,我可以用下面的代码重现问题。抱歉我的代码太糟糕了 ;)

你可以在注释块中的第94行重现这个问题,它运行起来需要一些时间。 https://github.com/mattdamon108/first-clojure/blob/master/aoc201809.clj
我认为最新版本中的错误最少,所以不建议尝试旧版本。我已经在我的系统上重现了这个问题。当我看到你的代码时,我有点儿开心,因为之前core.rrb-vector上的一个早期错误报告也是一个弹珠游戏,可能是有人编写代码来解决你解决的这个相同的2018年圣诞密码问题 #9。那个早期的错误已经被修复,但你似乎发现了我没有见过的另一个错误。

坦白地说,我有点怀疑自己是否能想出一个让core.rrb-vector(a)正确,(b)并满足RRB树声称能达到的运行时。

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

同时,有一个包含io.lacuna.bifurcan.List类的Java库,这个库可能比core.rrb-vector有更少的错误,但对于这一点没有保证: https://github.com/lacuna/bifurcan
首先,我很高兴知道我遇到这个错误是因为我错误地使用了这个库,也很高兴能够报告一个未知的错误。

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

感谢您让我了解到另一个库 io.lacuna.bifurcan.List。我会尝试使用它。

再次感谢您的辛勤工作!
+1

顺便提一下,这就是提出这个问题的正确地方,如果需要,我们将在内部 jira 系统中提交一个问题。

感谢您的信息!
...