From 0e6c403d54b815b8179eb1e0b46833e006e92573 Mon Sep 17 00:00:00 2001
From: Dominic Kempf <dominic.kempf@iwr.uni-heidelberg.de>
Date: Fri, 23 Dec 2016 10:21:47 +0100
Subject: [PATCH] Only write times if they are non-zero

---
 bin/calculate_floprate.py     |  2 +-
 dune/perftool/common/timer.hh | 14 +++++++++-----
 2 files changed, 10 insertions(+), 6 deletions(-)

diff --git a/bin/calculate_floprate.py b/bin/calculate_floprate.py
index 49b31361..88f77a2d 100644
--- a/bin/calculate_floprate.py
+++ b/bin/calculate_floprate.py
@@ -9,7 +9,7 @@ def parse_data():
     ops = frame[frame.what != "time"]
 
     # Here we should take 'min', but right now there are some zeroes written
-    timedata = time.groupby(('exec', 'kernel'))['value'].max()
+    timedata = time.groupby(('exec', 'kernel'))['value'].min()
     opsdata = ops.groupby(('exec', 'kernel'))['value'].max()
 
     return timedata, opsdata
diff --git a/dune/perftool/common/timer.hh b/dune/perftool/common/timer.hh
index 8f46c8a5..159d9c5c 100644
--- a/dune/perftool/common/timer.hh
+++ b/dune/perftool/common/timer.hh
@@ -71,12 +71,14 @@
 
 #ifdef ENABLE_COUNTER
 
-#define DUMP_TIMER(name,os,reset)                       \
-  os << exec << " " << #name << " time " << HP_TIMER_ELAPSED(name) << std::endl; \
+#define DUMP_TIMER(name,os,reset)\
+  if (HP_TIMER_ELAPSED(name) > 1e-12) \
+    os << exec << " " << #name << " time " << HP_TIMER_ELAPSED(name) << std::endl; \
   HP_TIMER_OPCOUNTERS(name).reportOperations(os,exec,#name,reset);
 
 #define DUMP_AND_ACCUMULATE_TIMER(name,os,reset,time,ops)  \
-  os << exec << " " << #name << " time " << HP_TIMER_ELAPSED(name) << std::endl; \
+  if (HP_TIMER_ELAPSED(name) > 1e-12) \
+    os << exec << " " << #name << " time " << HP_TIMER_ELAPSED(name) << std::endl; \
   time += HP_TIMER_ELAPSED(name); \
   ops += HP_TIMER_OPCOUNTERS(name); \
   HP_TIMER_OPCOUNTERS(name).reportOperations(os,exec,#name,reset);
@@ -84,11 +86,13 @@
 #elif defined ENABLE_HP_TIMERS
 
 #define DUMP_TIMER(name,os,reset)                       \
-  os << exec << " " << #name << " time " << HP_TIMER_ELAPSED(name) << std::endl; \
+  if (HP_TIMER_ELAPSED(name) > 1e-12) \
+    os << exec << " " << #name << " time " << HP_TIMER_ELAPSED(name) << std::endl; \
   if (reset) HP_TIMER_RESET(name);
 
 #define DUMP_AND_ACCUMULATE_TIMER(name,os,reset,time,ops)  \
-  os << exec << " " << #name << " time " << HP_TIMER_ELAPSED(name) << std::endl; \
+  if (HP_TIMER_ELAPSED(name) > 1e-12) \
+    os << exec << " " << #name << " time " << HP_TIMER_ELAPSED(name) << std::endl; \
   time += HP_TIMER_ELAPSED(name); \
   if (reset) HP_TIMER_RESET(name);
 
-- 
GitLab