Conversation
Can you shed some light on that @keremc? |
|
I'm still running sv-benchmarks, but here's ypbind_comb.c analysis times. BeforeAfter |
|
Here's the before vs after runtime on sv-benchmarks: That's a whopping ~19% improvement on average! |
|
I think I managed to make the Gobview adaptation. Function entry/return states and global states at least display correctly, statement nodes for some reason don't, but it's already that way on master: goblint/gobview#6. |
|
@michael-schwarz I don't know if this still holds, but I think the analysis ID used to be just an incremental ID and depended on the module initialization order. As a result, the ID was not stable across native and JS platforms, so I used |
|
Does goblint/gobview@3acd89c...d0d5b06#diff-22c5afd13651a2ae673bd24ed0234d0b09f51d2ede9fd99236875dbc8715fd73 sufficienlty address this issue then? At least at first glance, it seems like it. Or would we need more code for that? |
|
It's possible that #455 made that more consistent between native and JS builds. Anyway, my Gobview patch seemed to work as much as it could. And the reordering code is much shorter because there are fewer data structures to reorder. |

Changes
presubandpostsubfrom eagerly constructed assoc lists to lazy functions. This avoids the expensive (~5% of total runtime)filter_presubs, which constructed those lists for each transfer function, but they aren't even used by anything other than ARINC and OSEK. This slowdown was my original motivation for getting rid of these (Remove unmaintained features #460), but now that they aren't slowing down the usual analyses, they're not so much of a problem.unop_foldandbinop_foldofMCP'sPrintableandLatticeusingfold_left2andfold_left3respectively, by folding the domain elements simultaneously with the list of activated analysisSpecs. This avoids anyassocin those operations. To avoid nasty segfaults, there are assertions to check that the component IDs still match up.MCP'scombineandthreadspawnby folding over both domain elements (and optional contexts) simultaneously.MCPRegistryglobal assoc lists withHashtbls for faster lookup where still needed.TODO
MCP.analyses_tablefor, which was just a list of (analysis ID, analysis name) pairs.