diff options
Diffstat (limited to 'mwe/profiling/lib')
-rw-r--r-- | mwe/profiling/lib/CMakeLists.txt | 11 | ||||
-rw-r--r-- | mwe/profiling/lib/lib.cpp | 26 | ||||
-rw-r--r-- | mwe/profiling/lib/lib.h | 12 |
3 files changed, 49 insertions, 0 deletions
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 <chrono> +#include <thread> +#include <random> + +#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<mt19937::result_type> 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 + |