Keep a map of NetNets for fast access.

It turns out that netnets in scopes are accessed a lot, and mapping
them may help with performance.
This commit is contained in:
Stephen Williams 2008-10-26 16:50:46 -07:00
parent 81a0007f22
commit 0af896a7ff
2 changed files with 8 additions and 0 deletions

View File

@ -370,11 +370,13 @@ void NetScope::add_signal(NetNet*net)
net->sig_prev_->sig_next_ = net;
}
signals_ = net;
signals_map_[net->name()]=net;
}
void NetScope::rem_signal(NetNet*net)
{
assert(net->scope() == this);
signals_map_.erase(net->name());
if (signals_ == net)
signals_ = net->sig_prev_;
@ -396,6 +398,11 @@ NetNet* NetScope::find_signal(perm_string key)
if (signals_ == 0)
return 0;
if (signals_map_.find(key)!=signals_map_.end())
return signals_map_[key];
else
return 0;
NetNet*cur = signals_;
do {
if (cur->name() == key)

View File

@ -861,6 +861,7 @@ class NetScope : public Attrib {
NetNet::Type default_nettype_;
NetEvent *events_;
std::map <perm_string,NetNet*> signals_map_;
NetNet *signals_;
perm_string module_name_;
union {