forked from lix-project/lix
* Use std::tr1::unordered_set instead of std::set for the symbol
table. This gives a 10% speed increase on `nix-instantiate /etc/nixos/nixos -A system --readonly-mode'.
This commit is contained in:
parent
7d47498b5e
commit
816f9c0f6f
|
@ -1058,6 +1058,7 @@ void EvalState::printStats()
|
||||||
printMsg(v, format(" stack space per eval() level: %1% bytes") % ((&x - deepestStack) / (float) maxRecursionDepth));
|
printMsg(v, format(" stack space per eval() level: %1% bytes") % ((&x - deepestStack) / (float) maxRecursionDepth));
|
||||||
printMsg(v, format(" values allocated: %1%") % nrValues);
|
printMsg(v, format(" values allocated: %1%") % nrValues);
|
||||||
printMsg(v, format(" environments allocated: %1%") % nrEnvs);
|
printMsg(v, format(" environments allocated: %1%") % nrEnvs);
|
||||||
|
printMsg(v, format(" symbols in symbol table: %1%") % symbols.size());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
#define __SYMBOL_TABLE_H
|
#define __SYMBOL_TABLE_H
|
||||||
|
|
||||||
#include <map>
|
#include <map>
|
||||||
|
#include <tr1/unordered_set>
|
||||||
|
|
||||||
#include "types.hh"
|
#include "types.hh"
|
||||||
|
|
||||||
|
@ -59,7 +60,7 @@ inline std::ostream & operator << (std::ostream & str, const Symbol & sym)
|
||||||
class SymbolTable
|
class SymbolTable
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
typedef std::set<string> Symbols;
|
typedef std::tr1::unordered_set<string> Symbols;
|
||||||
Symbols symbols;
|
Symbols symbols;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
@ -68,6 +69,11 @@ public:
|
||||||
std::pair<Symbols::iterator, bool> res = symbols.insert(s);
|
std::pair<Symbols::iterator, bool> res = symbols.insert(s);
|
||||||
return Symbol(&*res.first);
|
return Symbol(&*res.first);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
unsigned int size() const
|
||||||
|
{
|
||||||
|
return symbols.size();
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue