commit 9939e5c982a6a56338831a5c28fc58408c32106e
parent 99fcc069b556c7b416f26d136c80c0de706df8f9
Author: Andrew Laack <andrew@laack.co>
Date: Wed, 16 Sep 2026 12:57:37 -0500
Removed benchmarking code; added some bm values
Diffstat:
5 files changed, 135 insertions(+), 36 deletions(-)
diff --git a/benchmarking/rlib-no-render.txt b/benchmarking/rlib-no-render.txt
@@ -0,0 +1,47 @@
+render time us: 8310
+prim step us: 6
+render time us: 179
+prim step us: 27
+render time us: 315
+prim step us: 7
+render time us: 198
+prim step us: 8
+render time us: 210
+prim step us: 7
+render time us: 487
+prim step us: 7
+render time us: 243
+prim step us: 6
+render time us: 201
+prim step us: 8
+render time us: 261
+prim step us: 21
+render time us: 200
+prim step us: 8
+render time us: 549
+prim step us: 6
+render time us: 202
+prim step us: 11
+render time us: 248
+prim step us: 7
+render time us: 177
+prim step us: 7
+render time us: 240
+prim step us: 6
+render time us: 833
+prim step us: 9
+render time us: 280
+prim step us: 36
+render time us: 316
+prim step us: 7
+render time us: 299
+prim step us: 8
+render time us: 245
+prim step us: 10
+render time us: 1085
+prim step us: 10
+render time us: 747
+prim step us: 8
+render time us: 235
+prim step us: 11
+render time us: 373
diff --git a/benchmarking/rlib-no-vertex.txt b/benchmarking/rlib-no-vertex.txt
@@ -0,0 +1,35 @@
+render time us: 10723
+prim step us: 11
+render time us: 1657
+prim step us: 9
+render time us: 1276
+prim step us: 7
+render time us: 1031
+prim step us: 22
+render time us: 900
+prim step us: 7
+render time us: 992
+prim step us: 7
+render time us: 1502
+prim step us: 10
+render time us: 1056
+prim step us: 7
+render time us: 1037
+prim step us: 6
+render time us: 1636
+prim step us: 8
+render time us: 977
+prim step us: 6
+render time us: 1603
+prim step us: 7
+render time us: 1084
+prim step us: 10
+render time us: 1001
+prim step us: 6
+render time us: 1763
+prim step us: 8
+render time us: 1119
+prim step us: 6
+render time us: 960
+prim step us: 10
+render time us: 1089
diff --git a/benchmarking/rlib-optimized-edge.txt b/benchmarking/rlib-optimized-edge.txt
@@ -0,0 +1,45 @@
+render time us: 12067
+prim step us: 9
+render time us: 2389
+prim step us: 11
+render time us: 3500
+prim step us: 6
+render time us: 2212
+prim step us: 12
+render time us: 2397
+prim step us: 9
+render time us: 3252
+prim step us: 17
+render time us: 2355
+prim step us: 8
+render time us: 3597
+prim step us: 8
+render time us: 3294
+prim step us: 6
+render time us: 910
+prim step us: 9
+render time us: 2810
+prim step us: 10
+render time us: 2219
+prim step us: 10
+render time us: 2504
+prim step us: 10
+render time us: 3424
+prim step us: 7
+render time us: 2268
+prim step us: 7
+render time us: 3821
+prim step us: 10
+render time us: 3005
+prim step us: 11
+render time us: 2118
+prim step us: 10
+render time us: 2417
+prim step us: 7
+render time us: 2314
+prim step us: 8
+render time us: 2934
+prim step us: 9
+render time us: 3074
+prim step us: 9
+render time us: 2458
diff --git a/src/graph.cpp b/src/graph.cpp
@@ -5,6 +5,7 @@
#include <cstddef>
#include <cstdint>
#include <stdexcept>
+#include <unordered_map>
#include "../include/constants.hpp"
#include "../include/utils.hpp"
@@ -66,6 +67,8 @@ std::string Graph::toString() noexcept {
void Graph::render() noexcept {
// yes, this will double draw because we track 0 -> 1 and 1 -> 0
+ // this is faster than tracking which have and haven't been rendered though
+ // with a to_string + unordered set.
std::vector<Edge> visited{};
for (auto pair : this->edges) {
diff --git a/src/main.cpp b/src/main.cpp
@@ -7,7 +7,6 @@
#include <iostream>
#include <queue>
#include <unordered_set>
-#include <chrono>
#include "../include/background.hpp"
#include "../include/constants.hpp"
@@ -15,14 +14,6 @@
#include "../include/prim.hpp"
#include "../vendor/argparse.hpp"
- #ifdef NDEBUG
- #define DLOG(statement) std::cout << statement << std::endl
- #define DEBUG true
- #else
- #define DLOG(statement)
- #define DEBUG false
- #endif
-
int main(int argc, char** argv) {
srand(clock());
@@ -93,7 +84,6 @@ int main(int argc, char** argv) {
InitWindow(xMax, yMax, "abg");
-
sendToBg("abg");
while (!WindowShouldClose()) {
@@ -109,21 +99,10 @@ int main(int argc, char** argv) {
visitedIndices.insert(0);
while (!WindowShouldClose() && toVisit.size() != 0) {
- if(DEBUG) {
- auto start = std::chrono::system_clock::now();
- BeginDrawing();
- ClearBackground(BLACK);
- g.render();
- EndDrawing();
- auto end = std::chrono::system_clock::now();
- auto elapsed = std::chrono::duration_cast<std::chrono::microseconds>(end - start);
- std::cout << "render time us: "<< elapsed.count() << std::endl;
- } else {
- BeginDrawing();
- ClearBackground(BLACK);
- g.render();
- EndDrawing();
- }
+ BeginDrawing();
+ ClearBackground(BLACK);
+ g.render();
+ EndDrawing();
// since we wait sleepTime here, the bg render has a render delta of
// at minimum sleepTime when switching tags in dwm, this is rather
@@ -134,19 +113,9 @@ int main(int argc, char** argv) {
// (at least on my hardware) and so this tradeoff is accepted for
// now, unless there's a simple approach that allows for preemption
-
usleep((int)(sleepTime * 1000000));
- if(DEBUG) {
- auto start = std::chrono::system_clock::now();
- oneStepPrim(toVisit, visitedIndices, g);
- auto end = std::chrono::system_clock::now();
- auto elapsed = std::chrono::duration_cast<std::chrono::microseconds>(end - start);
- std::cout << "prim step us: "<< elapsed.count() << std::endl;
- } else {
- oneStepPrim(toVisit, visitedIndices, g);
- }
-
+ oneStepPrim(toVisit, visitedIndices, g);
}
}
}