nowfound

Dev tools · April 14, 2025

SH

Single-Header Profiler for C++17

Morning HN. I often found myself wondering "how much does this code segment take in terms of total runtime" and it's often quite annoying to figure out with optimizations enabled, especially when working on something new or testing someone else's implementation without the proper tooling set up. Wanted to have a single include lib that would allow us to write something like: ``` PROFILE("Loop 1") for (...) // some work ``` and have the next expression automatically record time & dump results to a table. Wrote a few macros to do exactly that a few months back, but they were…

In plain words

Single-Header Profiler for C++17 is a lightweight profiling library that measures execution time of code segments with minimal setup. Developers add a macro around code blocks to automatically record timing data and generate results in table format. It handles nested profiling calls and recursive code by building a call graph, and supports multithreaded applications. The tool requires only a single header file to include, making it useful for quick performance testing without setting up external profiling infrastructure.

written from the facts on this page · September 2026

From the sources

In the maker’s words, at launch

Morning HN. I often found myself wondering "how much does this code segment take in terms of total runtime" and it's often quite annoying to figure out with optimizations enabled, especially when working on something new or testing someone else's implementation without the proper tooling set up. Wanted to have a single include lib that would allow us to write something like: ``` PROFILE("Loop 1") for (...) // some work ``` and have the next expression automatically record time & dump results to a table. Wrote a few macros to do exactly that a few months back, but they were primitive and basically unusable for recursive code. Tried to come up with a more generic solution that would build a call graph for nested profiler-macros, handle threads and etc. but doing so in a naive way would be super slow since we'd need some kind of a recursive map of nodes with callsites as a keys. Recently had a revelation that it is possible to use macro-generated thread_local's to associate callsites with integer IDs on the fly and with some effort call graph can be neatly encoded in a few contiguous arrays with all graph building & traversal logic reduced to simple checks and array lookups. Realized threading can be quite easily supported too in an almost lock-free fashion. After a few days of effort ended up building what I believe is a very much usable single-header profiling lib. Couldn't find anything quite like it, so I'd like to present it here and hear some opinions on the product: https://github.com/DmitriBogdanov/UTL/blob/master/docs/modul...

More dev tools this month

the category →
  • Dograh592

    The open source VAPI alternative

    Dev tools · 25d ago · dograh.com

  • Meridian530

    Don't let your work go unnoticed. Get promoted!

    Dev tools · 20d ago · meridiona.com

  • x1516

    Lovable for iPhone apps go from idea to App Store

    Dev tools · 11d ago · x1.new

  • Open-source GTM skills for technical founders

    Dev tools · 29d ago · gtmcofounder.com

  • OpenTrailPaper is open-source bike computer firmware for the LilyGO T5S3 4.7" E-Paper PRO. It supports offline maps, GPX routes, FIT recording and Bluetooth sensors.

    Dev tools · 1d ago · opentrailpaper.com

  • Nuphos380

    The AI-Native DevOps Workspace.

    Dev tools · 24d ago · nuphos.ai

Launched alongside, April 2025

the whole month →
  • IB

    Hi everyone, I built PyXL — a hardware processor that executes a custom assembly generated from Python programs, without using a traditional interpreter or virtual machine. It compiles Python -> CPython Bytecode -> Instruction set designed for direct hardware execution. I’m sharing an early benchmark: a GPIO test where PyXL achieves a 480ns round-trip toggle — compared to 14-25 micro seconds on a MicroPython Pyboard - even though PyXL runs at a lower clock (100MHz vs. 168MHz). The design is stack-based, fully pipelined, and preserves Python's dynamic typing without static type restrictions.…

    Dev tools · 2025 · runpyxl.com

  • UC

    Life & fun · 2025 · filiph.github.io

  • IB

    https://the-pocket.github.io/Tutorial-Codebase-Knowledge/

    AI · 2025 · github.com

  • Whatting898

    The iPad diary, just for you

    Work · 2025 · whatting.com

  • AI browser that saves you 18h/week

    AI · 2025 · strawberrybrowser.com

  • Peek828

    AI personal finance coach that guides you through decisions

    Work · 2025 · peek.money