Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
*::get_param_descrs
is called many times during the a run of z3 (in my case, a cegis loop), which causesstring_hash
to be approximately 5% of the runtime of the program, according to callgrind.The issues are constant strings that are getting converted to symbols on every call, which requires hashing of the string so that we can check the global symbol table.
I have a proof of concept patch here, which turns a lot of the symbols into static entries in the symbol table.
It's only meant for discussion, not for merging, since afaict, it currently only works in debug mode (since the initialization at startup requires some resources that aren't created yet), and requires the library to eagerly initialize the symbol table. However, it does remove the 5% hashing overhead.