我如何找到在Z3py中建模/检查可满足性时消耗的内存?

我如何找到在Z3py中建模/检查可满足性时消耗的内存?,z3,z3py,Z3,Z3py,我用的是z3py。我试图检查不同规模的不同问题的可满足性,并验证所提出方法的可扩展性。然而,要做到这一点,我需要知道每个问题的解算器消耗的内存。是否有办法访问内存或让z3py在统计部分打印它。事先非常感谢你 2015年5月27日更新: 我尝试使用paython内存分析器,但生成的内存似乎非常大。我不确定,但报告的内存类似于python应用程序使用的内存,而不仅仅是Z3(构建Z3模型,检查sat,然后生成模型)。此外,我使用正式的建模检查工具已经很多年了。我希望Z3更高效,具有更好的可扩展性,但是

我用的是z3py。我试图检查不同规模的不同问题的可满足性,并验证所提出方法的可扩展性。然而,要做到这一点,我需要知道每个问题的解算器消耗的内存。是否有办法访问内存或让z3py在统计部分打印它。事先非常感谢你

2015年5月27日更新:

我尝试使用paython内存分析器,但生成的内存似乎非常大。我不确定,但报告的内存类似于python应用程序使用的内存,而不仅仅是Z3(构建Z3模型,检查sat,然后生成模型)。此外,我使用正式的建模检查工具已经很多年了。我希望Z3更高效,具有更好的可扩展性,但是,我得到的内存比paython生成的内存要少得多。 我想做的是尝试使用内存以外的因素来衡量设计大小或可伸缩性。在z3py统计中,会生成许多详细信息来描述设计规模和复杂性。但是,我无法在教程、网页或z3论文中找到这些参数的任何解释。 例如,您能否帮助我了解我所拥有的一个基本模型的统计数据中生成的以下参数。此外,是否有任何参数/参数可以替换内存或很好地指示Z3 mdoel的大小/复杂性

  • :新增等式152
  • :断言低2
  • :断言上2
  • :二进制传播59
  • :冲突6
  • :数据类型存取器ax 12
  • :数据类型构造函数ax 14
  • :数据类型发生检查19
  • :数据类型拆分12
  • :第35号决定
  • :删除第2条
  • :eq适配器2
  • :最终检查1
  • :mk第9条
  • :偏移量等式2
  • :传播61

再次感谢您抽出时间

Z3近似于全局最大内存使用量,但它没有跟踪一个特定API调用的内存使用量的工具。在全局内存使用减少的情况下,这是不够的(例如,是否应该为负值?)。我认为像Python这样的外部工具会做得更好


更新后的问题是一个重复出现的问题,请查看以下早期答案:,,,。

我已将内存消耗的统计信息添加到不稳定分支中。 所以现在你应该可以从统计数据中获取这些信息了
Z3返回。

感谢您的回复,我已根据您的评论更新了我的问题。请检查更新。再次感谢。