Hi Alexandre,
I have some code that uses the standard pattern for checking language inclusion between two automata, using tgba_safra_complementation. The automata have a small number of states (<100) and one acceptance condition.
Running my code under valgrind for time profiling reveals a curious time distribution: 30% of the execution time is spent in malloc and free (20%/10% resp). The call hierarchy is as follows:
malloc/free <- operator new/delete <- tgba_tba_proxy::succ_iter <- tgba_sba_proxy ctor <- safra_determinisation::create_safra_automaton <- tgba_safra_complement
I have eliminated the contribution of my code to the run time of malloc and free (basically by avoiding creating and destroying the same states repeatedly through memoizing).
Is there any workaround to this, i.e., could better/different memory management eliminate this 30% of overhead? Are other complementation algorithms better for this use-case?
Best regards Nikos
PS What is the preferred way of referencing Spot in a publication?