-
Notifications
You must be signed in to change notification settings - Fork 62
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
Use a single persistent solver connection for typechecking cryptol #953
Comments
The profiling output shows that within |
Instead of making the processing of |
The solver instance is now passed down into the typechecking actions from outside rather than being created on each invocation of a typechecking action. Likewise, the solver has been pulled out as a parameter of the `ModuleInput` record that is passed into a `ModuleCmd`. At present, these are still created fresh for each module command inside `liftModuleCmd`. However, it would be relatively easy to continue this lifting process and persist the solver across and entire REPL session. The current refactoring should, I believe, be sufficent to address GaloisInc/saw-script#953 Fixes #996
PR GaloisInc/saw-core#197 adapts |
For testing purposes I recently tried running
examples/ecdsa/ecdsa-crucible.saw
usingcrucible_jvm_unsafe_assume_spec
instead ofcrucible_jvm_verify
throughout. I expected everything to run really fast, but it was not nearly as fast as I had hoped to see. Some specs took well over a second to process:I was surprised to see these specs take so long because
crucible_jvm_unsafe_assume_spec
doesn't really do much, other than check to see that everything in the spec is type-correct and otherwise well-formed.Using
unsafe_assume_spec
, the entire file takes a bit over 15 seconds to run. (For comparison, the file takes about 4:30 or so with all the symbolic simulation and proofs turned on.)Profiling shows that
crucible_jvm_unsafe_assume_spec
takes up about half of the total runtime. Of that, practically all of it is taken up by runningparseTypedTerm
on the embedded cryptol syntax{{ }}
.parseTypedTerm
appears to be called several hundred times in total.We should see what we can do to reduce the cost of running
parseTypedTerm
lots of times.The text was updated successfully, but these errors were encountered: