Changeset: af91ed17d38a for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=af91ed17d38a
Modified Files:
        monetdb5/mal/mal_profiler.c
Branch: default
Log Message:

Avoid double string rendering.


diffs (78 lines):

diff --git a/monetdb5/mal/mal_profiler.c b/monetdb5/mal/mal_profiler.c
--- a/monetdb5/mal/mal_profiler.c
+++ b/monetdb5/mal/mal_profiler.c
@@ -225,28 +225,31 @@ deactivateCounter(str name)
  * It uses a local logbuffer[LOGLEN] and logbase, logtop, loglen
  */
 #define LOGLEN 8192
-#define lognew()  loglen = 0; logbase = logbuffer; *logbase = 0;
+#define lognew()  do{ int e; loglen = 0; logbase = logbuffer; *logbase = 0;\
+               MT_lock_set(&mal_profileLock, "profileLock"); \
+               eventcounter++; e= eventcounter; \
+               MT_lock_unset(&mal_profileLock, "profileLock"); \
+               if (profileCounter[PROFevent].status && e) \
+                       (void) snprintf(logbase+loglen, LOGLEN -1 - loglen, "[ 
%d,\t",e);                                       \
+               else \
+                       (void) snprintf(logbase+loglen, LOGLEN -1 - loglen, "[ 
");                              \
+               loglen += (int) strlen(logbase+loglen);                         
        \
+       } while (0)
+
 #define logadd(...)                                                            
                        \
        do {                                                                    
                                        \
                (void) snprintf(logbase+loglen, LOGLEN -1 - loglen, 
__VA_ARGS__);                                       \
                loglen += (int) strlen(logbase+loglen);                         
        \
        } while (0)
 
-static void logsent(int header, char *logbuffer)
+static void logsent(char *logbuffer, int loglen)
 {
-       MT_lock_set(&mal_profileLock, "profileLock");
        if (eventstream) {
-               if ( header)
-                       mnstr_printf(eventstream,"%s\n", logbuffer);
-               else
-               if (profileCounter[PROFevent].status && eventcounter)
-                       mnstr_printf(eventstream,"[ %d,\t%s ]\n", eventcounter, 
logbuffer);
-               else
-                       mnstr_printf(eventstream,"[ %s ]\n", logbuffer);
+               MT_lock_set(&mal_profileLock, "profileLock"); \
+               mnstr_write(eventstream, logbuffer, loglen,1);
                mnstr_flush(eventstream);
+               MT_lock_unset(&mal_profileLock, "profileLock"); \
        }
-       eventcounter++;
-       MT_lock_unset(&mal_profileLock, "profileLock");
 }
 
 #define flushLog() if (eventstream) mnstr_flush(eventstream);
@@ -360,8 +363,8 @@ offlineProfilerHeader(void)
                logadd("types,\t");
        if (profileCounter[PROFuser].status)
                logadd("user,\t");
-       logadd("# name");
-       logsent(1, logbuffer);
+       logadd("# name \n");
+       logsent(logbuffer, loglen);
 }
 
 void
@@ -538,7 +541,8 @@ offlineProfilerEvent(int idx, MalBlkPtr 
        if (profileCounter[PROFuser].status) {
                logadd(" %d", idx);
        }
-       logsent(0, logbuffer);
+       logadd("]\n");
+       logsent(logbuffer, loglen);
 }
 /*
  * Postprocessing events
@@ -1503,7 +1507,8 @@ void profilerHeartbeatEvent(str msg)
                //logadd("\"\",\t");
        //if (profileCounter[PROFuser].status)
                //logadd(" 0");
-       logsent(0, logbuffer);
+       logadd("]\n");
+       logsent(logbuffer, loglen);
 }
 
 static MT_Id hbthread;
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
http://mail.monetdb.org/mailman/listinfo/checkin-list

Reply via email to