From 5361c6550460d3db6da94619fbb7f3b23be37f30 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Aur=C3=A9lien=20Esnard?= <aurelien.esnard@u-bordeaux.fr>
Date: Thu, 30 Nov 2017 15:27:53 +0100
Subject: [PATCH] add #time tag

---
 src/all/basic/basic.c | 24 ++++++++++++++----------
 1 file changed, 14 insertions(+), 10 deletions(-)

diff --git a/src/all/basic/basic.c b/src/all/basic/basic.c
index ab86fbd9..1df6c493 100644
--- a/src/all/basic/basic.c
+++ b/src/all/basic/basic.c
@@ -402,7 +402,10 @@ void StarPart_DIAG_call(StarPart_Context * ctx, char * method)
   Graph * g = StarPart_getGraph(data, "graph");  
   // printf("StarPart diagnostic for data \"%s\"\n", StarPart_getCurrentDataID(ctx));
   printGraphDiagnostic(g, nparts, part);
-  // printf("  - execution time = %lf (in ms)\n", data->exectime);
+  if(StarPart_isItem(data, "exectime")) {
+    double exectime = StarPart_getDouble(data, "exectime");
+    printf("  - execution time = %lf (in ms)\n", exectime);
+  }  
 }
 
 /* *********************************************************** */
@@ -867,11 +870,11 @@ void StarPart_STORE_post(StarPart_Context * ctx, char* method, char* key, char*
 void StarPart_TIME_pre(StarPart_Context * ctx, char* method, char* key, char* value)
 {  
   /* start timer */
-  // StarPart_Data * data = StarPart_getCurrentMethodArgument(ctx, "data");  
-  // struct timeval start; gettimeofday(&start, NULL);
-  // double exectime = (start.tv_sec*1000.0*1000.0 + start.tv_usec) / 1000.0; // in ms
-  // if(!StarPart_isItem(data, "exectime"))
-  // StarPart_addNewItem(data, "exectime", STARPART_GLOBAL, STARPART_DOUBLE, NEW_DOUBLE(exectime), true); 
+  StarPart_Data * data = StarPart_getCurrentMethodArgument(ctx, "data");  
+  struct timeval start; gettimeofday(&start, NULL);
+  double exectime = (start.tv_sec*1000.0*1000.0 + start.tv_usec) / 1000.0; // in ms
+  if(!StarPart_isItem(data, "exectime"))
+    StarPart_addNewItem(data, "exectime", STARPART_INOUT, STARPART_DOUBLE, NEW_DOUBLE(exectime), STARPART_GLOBAL, true); 
 }
 
 /* *********************************************************** */
@@ -879,10 +882,11 @@ void StarPart_TIME_pre(StarPart_Context * ctx, char* method, char* key, char* va
 void StarPart_TIME_post(StarPart_Context * ctx, char* method, char* key, char* value)
 {
   /* stop timer */
-  // struct timeval stop; gettimeofday(&stop, NULL);
-  // double exectime = (stop.tv_sec*1000.0*1000.0 + stop.tv_usec) / 1000.0; // in ms
-  // double _exectime = StarPart_getItemDouble(data, "exectime");
-  // StarPart_setItemDouble(data, "exectime", exectime - _exectime);
+  struct timeval stop; gettimeofday(&stop, NULL);
+  double exectime = (stop.tv_sec*1000.0*1000.0 + stop.tv_usec) / 1000.0; // in ms
+  StarPart_Data * data = StarPart_getCurrentMethodArgument(ctx, "data");  
+  double _exectime = StarPart_getDouble(data, "exectime");
+  StarPart_setDouble(data, "exectime", exectime - _exectime);
 }
 
 /* *********************************************************** */
-- 
GitLab