Почему z3.And() работает медленно?
Я использую привязки Z3 Python для создания выражения And через z3.And(exprs)
где exprs
список питонов из 48000 ограничений на равенство по логическим переменным Эта операция занимает 2 секунды на MBP с процессором 2,6 ГГц.
Что я могу делать не так? Это проблема с привязками z3 Python? Есть идеи, как оптимизировать такие конструкции?
Кстати, в моих экспериментах на построение таких выражений уходит больше времени, чем на решение получающихся формул:)
1 ответ
Решение
Использование Z3 поверх Python обычно довольно медленное. Он включает в себя проверку параметров и маршалинг (_coerce_expr среди других). Для масштабируемости вам лучше использовать одну из других привязок или по возможности обходить среду исполнения Python.