Rust Criterion无法构建基准测试

llew8vvj  于 2023-06-23  发布在  其他
关注(0)|答案(1)|浏览(130)

我使用criterion和cargo-criterion来对我的代码进行基准测试,但是在添加了几个基准测试之后,由于某种原因,我无法通过(基准测试的)构建步骤。我得到的错误消息对找出问题所在没有多大帮助,在网上搜索时也找不到关于问题的很多信息。
我从cargo criterioncargo bench得到的错误

Error: Failed to parse message from cargo187/190: continuous(bench), test_data(bench), simplistic(bench)

Caused by:
    expected value at line 188 column 1
error: could not compile `compiled-regex`

回购:https://github.com/Tobiky/compiled-regex/
我在工作区的示例文件中运行各个基准测试时没有遇到任何问题,也没有发现任何错误。
是什么导致了这个问题?

编辑1:从进一步的挖掘中,我发现rustc在构建过程中会自我毁灭,但它没有给出任何原因。

我还测试了基准测试的组合和顺序,看看是否有任何效果,测试了大约一半,到目前为止没有任何效果。

编辑2:根据@kmdreko的建议,问题可能是编译器消耗了太多内存,结果是真的。由于代码正在生成,它可能与那里的东西有关,我目前正在调查。到目前为止,在几个生成的函数上删除内联已经解决了这个问题,但我仍然不知道为什么。

km0tfn4u

km0tfn4u1#

问题最终是对生成的代码进行了攻击性内联调用。可能的递归函数和函数深度可能是@kmdreko描述的OOM的原因。删除内联调用消除了崩溃。
一旦我做了进一步的调整和测试来缩小原因,我将编辑这个答案。

相关问题