@@ -29,6 +29,29 @@ function(RB_ADD_SETUP_FIXTURE benchmark)
29
29
endfunction (RB_ADD_SETUP_FIXTURE )
30
30
31
31
32
+ #----------------------------------------------------------------------------
33
+ # function RB_ADD_FLAMEGRAPHCPU_FIXTURE(<benchmark>)
34
+ #----------------------------------------------------------------------------
35
+ function (RB_ADD_FLAMEGRAPHCPU_FIXTURE benchmark )
36
+ cmake_parse_arguments (ARG "" "" "" ${ARGN} )
37
+ add_test (NAME rootbench-fixture-flamegraphcpu-${benchmark}
38
+ COMMAND ${PROJECT_BINARY_DIR} /tools/flamegraph.sh -d ${PROJECT_BINARY_DIR} -b ${CMAKE_CURRENT_BINARY_DIR} /${benchmark} -c )
39
+ set_tests_properties (rootbench-fixture-flamegraphcpu-${benchmark} PROPERTIES FIXTURES_CLEANUP flamegraphcpu-${benchmark} )
40
+ endfunction (RB_ADD_FLAMEGRAPHCPU_FIXTURE )
41
+
42
+
43
+ #----------------------------------------------------------------------------
44
+ # function RB_ADD_FLAMEGRAPHMEM_FIXTURE(<benchmark>)
45
+ #----------------------------------------------------------------------------
46
+ function (RB_ADD_FLAMEGRAPHMEM_FIXTURE benchmark )
47
+ cmake_parse_arguments (ARG "" "" "" ${ARGN} )
48
+ add_test (NAME rootbench-fixture-flamegraphmem-${benchmark}
49
+ COMMAND ${PROJECT_BINARY_DIR} /tools/flamegraph.sh -d ${PROJECT_BINARY_DIR} -b ${CMAKE_CURRENT_BINARY_DIR} /${benchmark} -m )
50
+ set_tests_properties (rootbench-fixture-flamegraphmem-${benchmark} PROPERTIES FIXTURES_CLEANUP flamegraphmem-${benchmark} )
51
+ endfunction (RB_ADD_FLAMEGRAPHMEM_FIXTURE )
52
+
53
+
54
+
32
55
#----------------------------------------------------------------------------
33
56
# function RB_ADD_GBENCHMARK(<benchmark> source1 source2... LIBRARIES libs)
34
57
#----------------------------------------------------------------------------
@@ -44,18 +67,6 @@ function(RB_ADD_GBENCHMARK benchmark)
44
67
# against. For example, tests in Core should link only against libCore. This could be tricky
45
68
# to implement because some ROOT components create more than one library.
46
69
target_link_libraries (${benchmark} ${ARG_LIBRARIES} gbenchmark RBSupport )
47
- #ROOT_PATH_TO_STRING(mangled_name ${benchmark} PATH_SEPARATOR_REPLACEMENT "-")
48
- if (ARG_POSTCMD )
49
- set (postcmd POSTCMD ${ARG_POSTCMD} )
50
- endif ()
51
- if (flamegraphCPU )
52
- set (postcmd ${postcmd} "${PROJECT_SOURCE_DIR} /rootbench-scripts/flamegraph.sh -d ${PROJECT_BINARY_DIR} -b ${CMAKE_CURRENT_BINARY_DIR} /${benchmark} -c" )
53
- add_dependencies (${benchmark} flamegraph-download )
54
- endif ()
55
- if (flamegraphMem )
56
- set (postcmd ${postcmd} "${PROJECT_SOURCE_DIR} /rootbench-scripts/flamegraph.sh -d ${PROJECT_BINARY_DIR} -b ${CMAKE_CURRENT_BINARY_DIR} /${benchmark} -m" )
57
- add_dependencies (${benchmark} flamegraph-download )
58
- endif ()
59
70
if (${ARG_LABEL} STREQUAL "long" )
60
71
set (${TIMEOUT_VALUE} 1200 )
61
72
elseif ($ARG_LABEL STREQUAL "short" )
@@ -74,13 +85,21 @@ function(RB_ADD_GBENCHMARK benchmark)
74
85
RB_ADD_SETUP_FIXTURE (${benchmark} SETUP ${ARG_SETUP} )
75
86
endif ()
76
87
88
+ # Flamegraphs (both mem and cpu)
89
+ if (flamegraphCPU )
90
+ RB_ADD_FLAMEGRAPHCPU_FIXTURE (${benchmark} )
91
+ endif ()
92
+ if (flamegraphMem )
93
+ RB_ADD_FLAMEGRAPHMEM_FIXTURE (${benchmark} )
94
+ endif ()
95
+
77
96
# Add benchmark as a CTest
78
97
add_test (NAME rootbench-${benchmark}
79
98
COMMAND ${benchmark} --benchmark_out_format=csv --benchmark_out=rootbench-gbenchmark-${benchmark}.csv --benchmark_color=false )
80
99
set_tests_properties (rootbench-${benchmark} PROPERTIES
81
100
ENVIRONMENT LD_LIBRARY_PATH=${ROOT_LIBRARY_DIR}:$ENV{LD_LIBRARY_PATH}
82
101
TIMEOUT "${TIMEOUT_VALUE} " LABELS "${ARG_LABEL} " RUN_SERIAL TRUE
83
- FIXTURES_REQUIRED "setup-${benchmark} ;download-${benchmark} -datafiles" )
102
+ FIXTURES_REQUIRED "setup-${benchmark} ;download-${benchmark} -datafiles;flamegraphcpu- ${benchmark} ;flamegraphmem- ${benchmark} " )
84
103
endfunction (RB_ADD_GBENCHMARK )
85
104
86
105
0 commit comments