-
Notifications
You must be signed in to change notification settings - Fork 1.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Performance problem with Solver.translate() #5653
Comments
Solver.translate does not copy the original constraints, it copies constraints after pre-processing. It also copies learned lemmas with high glue levels and it copies model reconstruction instructions. These three elements can each contribute to overhead beyond the original set of constraints but they should not outright lead to drastic slow-downs. |
Do you have any repro or were you able to gain insights based on the above comment? |
Sorry for the delayed reply. You can find here 12 instances I've come upon where translate is significantly slower. Unzipping and running |
Thanks, the repro is useful. It uses the files in an essential way. I pushed an update that addresses a main perf bottleneck. |
I've been experimenting with incrementalism in the context of symbolic execution using z3 (Python API). When forking a state, I use Solver.translate() to clone the solver instead of creating a new solver instance and copying all the constraints, as suggested in #556. I've surprisingly observed that Solver.translate() is much slower than the latter approach. Could you help me understand why that is?
The text was updated successfully, but these errors were encountered: