zlktree: replace std::vector<bool> by bitvect in ACD
On the example from previous patch, the number of instruction fetches goes from 18490399159 down to 18248898077. * spot/twaalgos/zlktree.cc, spot/twaalgos/zlktree.hh (acd): Use bitvect instead of std::vector<bool> in nodes. This make is easier to update an edge of a bitvector shared by multiple nodes set after pruning non-maximal sets from an SCC. Also compute the set of states hit by the edges at the very end, once all nodes are known. * spot/twaalgos/sccinfo.cc, spot/twaalgos/sccinfo.hh, spot/twaalgos/genem.cc, spot/twaalgos/genem.hh: Adjust to work with bitvect as filter.
This commit is contained in:
parent
6aa2079079
commit
2d1cb0ddcd
6 changed files with 41 additions and 33 deletions
|
|
@ -21,6 +21,7 @@
|
|||
|
||||
#include <spot/twaalgos/emptiness.hh>
|
||||
#include <spot/twaalgos/sccinfo.hh>
|
||||
#include <spot/misc/bitvect.hh>
|
||||
|
||||
namespace spot
|
||||
{
|
||||
|
|
@ -73,13 +74,13 @@ namespace spot
|
|||
/// `si->inner_edges_of(num)` lists the relevant edges.
|
||||
///
|
||||
/// The search is restricted to a set of edges of the given SCC
|
||||
/// for which \a keep (an array indexed by edge numbers) is true.
|
||||
/// for which \a keep (a bitvect indexed by edge numbers) is true.
|
||||
///
|
||||
/// Returns false iff no accepting loop where found.
|
||||
SPOT_API bool
|
||||
maximal_accepting_loops_for_scc(const scc_info& si, unsigned scc,
|
||||
const acc_cond& forced_acc,
|
||||
const std::vector<bool>& keep,
|
||||
const bitvect& keep,
|
||||
std::function<void(const scc_info&,
|
||||
unsigned)> callback);
|
||||
#endif
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue