about summary refs log tree commit diff
diff options
context:
space:
mode:
authorEelco Dolstra <eelco.dolstra@logicblox.com>2013-10-08T13·34+0200
committerEelco Dolstra <eelco.dolstra@logicblox.com>2013-10-08T13·37+0200
commit7bdb85453d16106ebf4d4af106720d917e221ad9 (patch)
treed8d9b37d490f85a3757af149c8851ad9ac00015b
parent9deb822180fb80638559fe3c45c6a77a2b56ff40 (diff)
printStats(): Print the size of the symbol table in bytes
-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 df129eda66b7..0e15a8d9374e 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 28049bb0d638..2e26d50817fb 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 ccdabb0280b4..9129f0f460c3 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;
 };
 
 }