Skip to content

Commit 5d5c0b1

Browse files
committed
add logging performance test with multi-threads.
Signed-off-by: Tomoya Fujita <[email protected]>
1 parent b1ab77c commit 5d5c0b1

File tree

2 files changed

+60
-0
lines changed

2 files changed

+60
-0
lines changed

prover_rclcpp/CMakeLists.txt

+1
Original file line numberDiff line numberDiff line change
@@ -185,6 +185,7 @@ custom_executable(ros2cli_834)
185185
custom_executable(sim_clock_publisher)
186186
custom_executable(intraprocess_pub_sub)
187187
custom_executable(rclcpp_logger_test)
188+
custom_executable(rcl_logging_performance)
188189

189190
if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang" AND
190191
"${CMAKE_CXX_COMPILER_VERSION}" VERSION_LESS 6.0)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
#include <thread>
2+
#include <vector>
3+
4+
#include <rclcpp/logger.hpp>
5+
#include <rclcpp/logging.hpp>
6+
#include <rclcpp/rclcpp.hpp>
7+
8+
void log_debug(rclcpp::Node::SharedPtr node) {
9+
for (int i = 0; i < 1000000; i++) {
10+
RCLCPP_DEBUG(node->get_logger(), "Debug level logging");
11+
}
12+
}
13+
14+
void log_info(rclcpp::Node::SharedPtr node) {
15+
for (int i = 0; i < 1000000; i++) {
16+
RCLCPP_INFO(node->get_logger(), "Information level logging");
17+
}
18+
}
19+
20+
void log_warn(rclcpp::Node::SharedPtr node) {
21+
for (int i = 0; i < 1000000; i++) {
22+
RCLCPP_WARN(node->get_logger(), "Warning level logging");
23+
}
24+
}
25+
26+
void log_error(rclcpp::Node::SharedPtr node) {
27+
for (int i = 0; i < 1000000; i++) {
28+
RCLCPP_ERROR(node->get_logger(), "Error level logging");
29+
}
30+
}
31+
32+
void log_fatal(rclcpp::Node::SharedPtr node) {
33+
for (int i = 0; i < 1000000; i++) {
34+
RCLCPP_FATAL(node->get_logger(), "Fatal level logging");
35+
}
36+
}
37+
38+
int main(int argc, char * argv[])
39+
{
40+
rclcpp::init(argc, argv);
41+
rclcpp::Node::SharedPtr node{rclcpp::Node::make_shared("node")};
42+
43+
node->get_logger().set_level(rclcpp::Logger::Level::Debug);
44+
45+
std::vector<std::thread> threads;
46+
threads.emplace_back(log_debug, node);
47+
threads.emplace_back(log_info, node);
48+
threads.emplace_back(log_warn, node);
49+
threads.emplace_back(log_error, node);
50+
threads.emplace_back(log_fatal, node);
51+
52+
for (auto &thread : threads) {
53+
thread.join();
54+
}
55+
56+
rclcpp::shutdown();
57+
58+
return 0;
59+
}

0 commit comments

Comments
 (0)