about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--src/libexpr/eval.cc5
-rw-r--r--src/libutil/aterm-map.cc36
-rw-r--r--src/libutil/aterm-map.hh4
3 files changed, 30 insertions, 15 deletions
diff --git a/src/libexpr/eval.cc b/src/libexpr/eval.cc
index 38f198fb86..ee17c996c6 100644
--- a/src/libexpr/eval.cc
+++ b/src/libexpr/eval.cc
@@ -527,9 +527,12 @@ extern "C" {
 
 void printEvalStats(EvalState & state)
 {
-    printMsg(lvlInfo,
+    bool showStats = getEnv("NIX_SHOW_STATS", "0") != "0";
+    printMsg(showStats ? lvlInfo : lvlDebug,
         format("evaluated %1% expressions, %2% cache hits, %3%%% efficiency, used %4% ATerm bytes")
         % state.nrEvaluated % state.nrCached
         % ((float) state.nrCached / (float) state.nrEvaluated * 100)
         % AT_calcAllocatedSize());
+    if (showStats)
+        printATermMapStats();
 }
diff --git a/src/libutil/aterm-map.cc b/src/libutil/aterm-map.cc
index e0cfefa2d5..60092382a2 100644
--- a/src/libutil/aterm-map.cc
+++ b/src/libutil/aterm-map.cc
@@ -213,6 +213,27 @@ unsigned int ATermMap::size()
 }
 
 
+#include <iostream>
+
+void printATermMapStats()
+{
+    cout << "RESIZES: " << nrResizes << " "
+         << sizeTotalAlloc << " "
+         << sizeCurAlloc << " "
+         << sizeMaxAlloc << endl;
+        
+    cout << "SET: "
+         << nrItemsSet << " "
+         << nrSetProbes << " "
+         << (double) nrSetProbes / nrItemsSet << endl;
+
+    cout << "GET: "
+         << nrItemsGet << " "
+         << nrGetProbes << " "
+         << (double) nrGetProbes / nrItemsGet << endl;
+}
+
+
 #if 0
 int main(int argc, char * * argv)
 {
@@ -294,19 +315,6 @@ int main(int argc, char * * argv)
         
     }
 
-    cout << "RESIZES: " << nrResizes << " "
-         << sizeTotalAlloc << " "
-         << sizeCurAlloc << " "
-         << sizeMaxAlloc << endl;
-        
-    cout << "SET: "
-         << nrItemsSet << " "
-         << nrSetProbes << " "
-         << (double) nrSetProbes / nrItemsSet << endl;
-
-    cout << "GET: "
-         << nrItemsGet << " "
-         << nrGetProbes << " "
-         << (double) nrGetProbes / nrItemsGet << endl;
+    printATermMapStats();
 }
 #endif
diff --git a/src/libutil/aterm-map.hh b/src/libutil/aterm-map.hh
index d7aed2ca21..6d13d7f9e0 100644
--- a/src/libutil/aterm-map.hh
+++ b/src/libutil/aterm-map.hh
@@ -111,4 +111,8 @@ private:
 };
 
 
+/* Hack. */
+void printATermMapStats();
+
+
 #endif /* !__ATERM_MAP_H */