Author: Tobias Weber <[email protected]>
Branch: c8-overheads-instrumentation
Changeset: r2029:4bb06ec721cd
Date: 2017-03-13 12:29 +0100
http://bitbucket.org/pypy/stmgc/changeset/4bb06ec721cd/
Log: Add pause function to timing utility
diff --git a/c8/stm/timing.h b/c8/stm/timing.h
--- a/c8/stm/timing.h
+++ b/c8/stm/timing.h
@@ -1,19 +1,21 @@
#include <time.h>
+#define continue_timer() clock_gettime(CLOCK_MONOTONIC_RAW, &start);
+
/* Use raw monotonic time, i.e., solely based on local hardware (no NTP
adjustments) as in prof.c to obtain values comparable with total program
runtime. */
-#define start_timer() struct timespec start; \
- clock_gettime(CLOCK_MONOTONIC_RAW, &start);
+#define start_timer() struct timespec start, stop, duration = { 0, 0 }; \
+ continue_timer()
-#define stop_timer() struct timespec stop; \
- clock_gettime(CLOCK_MONOTONIC_RAW, &stop);
+/* Must use start_timer before using this macro. */
+#define get_duration() duration.tv_sec = \
+ stop.tv_sec - start.tv_sec + duration.tv_sec; \
+ duration.tv_nsec = \
+ stop.tv_nsec - start.tv_nsec + duration.tv_nsec;
-/* Must use start_timer and stop_timer before using this macro. */
-#define get_duration() struct timespec duration = { \
- stop.tv_sec - start.tv_sec, \
- stop.tv_nsec - start.tv_nsec \
- };
+#define pause_timer() clock_gettime(CLOCK_MONOTONIC_RAW, &stop); \
+ get_duration()
#define stm_duration_payload(duration) \
stm_timing_event_payload_data_t stm_duration_data = \
@@ -23,10 +25,10 @@
#define publish_event(event) \
(timing_enabled() ? \
- stmcb_timing_event(STM_SEGMENT->running_thread, event,
&stm_duration_payload) : \
+ stmcb_timing_event( \
+ STM_SEGMENT->running_thread, event, &stm_duration_payload) : \
(void)0);
-#define stop_timer_and_publish(event) stop_timer() \
- get_duration() \
+#define stop_timer_and_publish(event) pause_timer() \
stm_duration_payload(duration) \
publish_event(event)
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit