mirror of
https://github.com/Z3Prover/z3
synced 2025-10-11 18:28:08 +00:00
cache is_shared information in the enode
observed perf overhead for QF_NIA is that assume_eqs in theory_lra incurs significant overhead when calling is_relevant_and_shared. The call to context::is_shared and the loop checking for beta redexes is a main bottleneck. The bottleneck is avoided by caching the result if is_shared inside the enode. It is invalidated for every merge/unmerge.
This commit is contained in:
parent
eea9c0bec6
commit
61319ffd85
6 changed files with 58 additions and 6 deletions
|
@ -49,6 +49,7 @@ namespace smt {
|
|||
n->m_iscope_lvl = iscope_lvl;
|
||||
n->m_lbl_hash = -1;
|
||||
n->m_proof_is_logged = false;
|
||||
n->m_is_shared = 2;
|
||||
unsigned num_args = n->get_num_args();
|
||||
for (unsigned i = 0; i < num_args; i++) {
|
||||
enode * arg = app2enode[owner->get_arg(i)->get_id()];
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue