aboutsummaryrefslogtreecommitdiff
path: root/src/libexpr
diff options
context:
space:
mode:
authorEelco Dolstra <eelco.dolstra@logicblox.com>2013-10-08 15:34:57 +0200
committerEelco Dolstra <eelco.dolstra@logicblox.com>2013-10-08 15:37:08 +0200
commit7bdb85453d16106ebf4d4af106720d917e221ad9 (patch)
treed8d9b37d490f85a3757af149c8851ad9ac00015b /src/libexpr
parent9deb822180fb80638559fe3c45c6a77a2b56ff40 (diff)
printStats(): Print the size of the symbol table in bytes
Diffstat (limited to 'src/libexpr')
-rw-r--r--src/libexpr/eval.cc1
-rw-r--r--src/libexpr/nixexpr.cc12
-rw-r--r--src/libexpr/symbol-table.hh2
3 files changed, 15 insertions, 0 deletions
diff --git a/src/libexpr/eval.cc b/src/libexpr/eval.cc
index df129eda6..0e15a8d93 100644
--- a/src/libexpr/eval.cc
+++ b/src/libexpr/eval.cc
@@ -1262,6 +1262,7 @@ void EvalState::printStats()
printMsg(v, format(" right-biased unions: %1%") % nrOpUpdates);
printMsg(v, format(" values copied in right-biased unions: %1%") % nrOpUpdateValuesCopied);
printMsg(v, format(" symbols in symbol table: %1%") % symbols.size());
+ printMsg(v, format(" size of symbol table: %1%") % symbols.totalSize());
printMsg(v, format(" number of thunks: %1%") % nrThunks);
printMsg(v, format(" number of thunks avoided: %1%") % nrAvoided);
printMsg(v, format(" number of attr lookups: %1%") % nrLookups);
diff --git a/src/libexpr/nixexpr.cc b/src/libexpr/nixexpr.cc
index 28049bb0d..2e26d5081 100644
--- a/src/libexpr/nixexpr.cc
+++ b/src/libexpr/nixexpr.cc
@@ -336,4 +336,16 @@ string ExprLambda::showNamePos()
}
+
+/* Symbol table. */
+
+size_t SymbolTable::totalSize() const
+{
+ size_t n = 0;
+ foreach (Symbols::const_iterator, i, symbols)
+ n += i->size();
+ return n;
+}
+
+
}
diff --git a/src/libexpr/symbol-table.hh b/src/libexpr/symbol-table.hh
index ccdabb028..9129f0f46 100644
--- a/src/libexpr/symbol-table.hh
+++ b/src/libexpr/symbol-table.hh
@@ -89,6 +89,8 @@ public:
{
return symbols.size();
}
+
+ size_t totalSize() const;
};
}