You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Profiling shows that in the saw-core backends, the function evalGlobal'.global in module Verifier.SAW.Simulator is called way too many times. Each call requires a lookup in a map keyed by the Ident of the global. It should only be called at most once per global constant; the unique term ids should cache the result of each lookup after that. However, profiling shows that we are doing millions of map lookups, and the cost adds up.
The text was updated successfully, but these errors were encountered:
I think the problem is caused by the fact that definition bodies of constants defined in the saw-core prelude are not constructed as shared terms; they use the Unshared constructor instead. We could improve the performance either by doing hash consing and term sharing while importing the saw-core prelude, or by doing a name resolution pass over the ASTs.
I believe that this problem no longer occurs; as of GaloisInc/saw-core#118 we are now producing shared terms from definitions in the saw-core prelude, which are now represented as Constant terms.
Profiling shows that in the saw-core backends, the function
evalGlobal'.global
in moduleVerifier.SAW.Simulator
is called way too many times. Each call requires a lookup in a map keyed by theIdent
of the global. It should only be called at most once per global constant; the unique term ids should cache the result of each lookup after that. However, profiling shows that we are doing millions of map lookups, and the cost adds up.The text was updated successfully, but these errors were encountered: