powerset: tiny speedup

* src/tgbaalgos/powerset.cc: Replace std::deque by vector, and take
the return of aut->out(s) by reference.
This commit is contained in:
Alexandre Duret-Lutz 2015-01-12 23:23:47 +01:00
parent 2377523c02
commit 0d1c08e6e1

View file

@ -21,7 +21,6 @@
// along with this program. If not, see <http://www.gnu.org/licenses/>. // along with this program. If not, see <http://www.gnu.org/licenses/>.
#include <set> #include <set>
#include <deque>
#include <iterator> #include <iterator>
#include <vector> #include <vector>
#include "powerset.hh" #include "powerset.hh"
@ -46,7 +45,7 @@ namespace spot
{ {
typedef power_map::power_state power_state; typedef power_map::power_state power_state;
typedef std::map<power_map::power_state, int> power_set; typedef std::map<power_map::power_state, int> power_set;
typedef std::deque<power_map::power_state> todo_list; typedef std::vector<power_map::power_state> todo_list;
power_set seen; power_set seen;
todo_list todo; todo_list todo;
@ -63,12 +62,12 @@ namespace spot
while (!todo.empty()) while (!todo.empty())
{ {
power_state src = todo.front(); power_state src = todo.back();
todo.pop_front(); todo.pop_back();
// Compute all variables occurring on outgoing arcs. // Compute all variables occurring on outgoing arcs.
bdd all_vars = bddtrue; bdd all_vars = bddtrue;
for (auto s: src) for (auto s: src)
for (auto i: aut->out(s)) for (auto& i: aut->out(s))
all_vars &= bdd_support(i.cond); all_vars &= bdd_support(i.cond);
bdd all_conds = bddtrue; bdd all_conds = bddtrue;