abg

Animated background for X11
git clone git://git.laack.co/abg.git
Log | Files | Refs | README | LICENSE

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:
Abenchmarking/rlib-no-render.txt | 47+++++++++++++++++++++++++++++++++++++++++++++++
Abenchmarking/rlib-no-vertex.txt | 35+++++++++++++++++++++++++++++++++++
Abenchmarking/rlib-optimized-edge.txt | 45+++++++++++++++++++++++++++++++++++++++++++++
Msrc/graph.cpp | 3+++
Msrc/main.cpp | 41+++++------------------------------------
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); } } }