Почему z3.And() работает медленно?

Я использую привязки Z3 Python для создания выражения And через z3.And(exprs) где exprs список питонов из 48000 ограничений на равенство по логическим переменным Эта операция занимает 2 секунды на MBP с процессором 2,6 ГГц.

Что я могу делать не так? Это проблема с привязками z3 Python? Есть идеи, как оптимизировать такие конструкции?

Кстати, в моих экспериментах на построение таких выражений уходит больше времени, чем на решение получающихся формул:)

1 ответ

Решение

Использование Z3 поверх Python обычно довольно медленное. Он включает в себя проверку параметров и маршалинг (_coerce_expr среди других). Для масштабируемости вам лучше использовать одну из других привязок или по возможности обходить среду исполнения Python.

Другие вопросы по тегам