From 816f9c0f6fae0229961bb573dfa0f75ff42c14eb Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Tue, 13 Apr 2010 14:34:11 +0000 Subject: * 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'. --- src/libexpr/symbol-table.hh | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'src/libexpr/symbol-table.hh') diff --git a/src/libexpr/symbol-table.hh b/src/libexpr/symbol-table.hh index ae0751d11..424c23538 100644 --- a/src/libexpr/symbol-table.hh +++ b/src/libexpr/symbol-table.hh @@ -2,6 +2,7 @@ #define __SYMBOL_TABLE_H #include +#include #include "types.hh" @@ -59,7 +60,7 @@ inline std::ostream & operator << (std::ostream & str, const Symbol & sym) class SymbolTable { private: - typedef std::set Symbols; + typedef std::tr1::unordered_set Symbols; Symbols symbols; public: @@ -68,6 +69,11 @@ public: std::pair res = symbols.insert(s); return Symbol(&*res.first); } + + unsigned int size() const + { + return symbols.size(); + } }; } -- cgit v1.2.3