为什么从z3 java API获取查询结果比从z3直接获取更慢?

时间:2014-04-07 00:37:31

标签: java z3 smt

注意到对于某些基准测试,通过java API从z3获取查询结果真的很慢。但是,如果我只是将查询转储为smt2格式,并直接在命令行中运行z3,则只需不到一秒钟。不知道为什么?

1 个答案:

答案 0 :(得分:1)

我注意到您的问题包含(push)命令,删除它会显着改变性能。当Z3第一次看到(push)时,它会切换到支持增量的不同解算器,这会对性能产生巨大影响。通过-v:15将详细程度设置为15,Z3s输出的第一行告诉您它正在使用哪个求解器,例如,当push命令出现时,它说

(combined-solver "using solver 2 (without a timeout)")

如果不是,则表示

(combined-solver "using solver 1")

对于给定的示例,求解器2恰好更快。