From faccce92caa85e1466e30a1284119b1a8a666fa3 Mon Sep 17 00:00:00 2001 From: Loek Le Blansch Date: Wed, 11 Sep 2024 15:07:22 +0200 Subject: add profiling poc --- mwe/profiling/lib/CMakeLists.txt | 11 +++++++++++ mwe/profiling/lib/lib.cpp | 26 ++++++++++++++++++++++++++ mwe/profiling/lib/lib.h | 12 ++++++++++++ 3 files changed, 49 insertions(+) create mode 100644 mwe/profiling/lib/CMakeLists.txt create mode 100644 mwe/profiling/lib/lib.cpp create mode 100644 mwe/profiling/lib/lib.h (limited to 'mwe/profiling/lib') diff --git a/mwe/profiling/lib/CMakeLists.txt b/mwe/profiling/lib/CMakeLists.txt new file mode 100644 index 0000000..bd78d59 --- /dev/null +++ b/mwe/profiling/lib/CMakeLists.txt @@ -0,0 +1,11 @@ +cmake_minimum_required(VERSION 3.28) + +set(CMAKE_C_STANDARD 11) +set(CMAKE_CXX_STANDARD 20) +set(CMAKE_BUILD_TYPE Release) + +project(lib C CXX) + +add_library(test SHARED lib.cpp) +target_include_directories(test SYSTEM INTERFACE .) + diff --git a/mwe/profiling/lib/lib.cpp b/mwe/profiling/lib/lib.cpp new file mode 100644 index 0000000..9ea8f26 --- /dev/null +++ b/mwe/profiling/lib/lib.cpp @@ -0,0 +1,26 @@ +#include +#include +#include + +#include "lib.h" + +// yeah this is bad, boo hoo +using namespace std; +using std::this_thread::sleep_for; +using std::chrono::milliseconds; + +random_device dev; +mt19937 rng(dev()); +uniform_int_distribution random_dist(1, 50); + +static void random_slow() { + int delay = random_dist(rng); + sleep_for(milliseconds(delay)); +} + +int recursive(int rem) { + if (rem <= 0) return 0; + random_slow(); + return recursive(rem - 1) + recursive(rem - 2); +} + diff --git a/mwe/profiling/lib/lib.h b/mwe/profiling/lib/lib.h new file mode 100644 index 0000000..fc413ff --- /dev/null +++ b/mwe/profiling/lib/lib.h @@ -0,0 +1,12 @@ +#pragma once + +#ifdef __cplusplus +extern "C" { +#endif + +int recursive(int rem); + +#ifdef __cplusplus +} +#endif + -- cgit v1.2.3