Topics /

Systems & Performance

The most popular blog posts about systems & performance on Hacker News. 391 posts.

2023
332

Escape analysis hates copy elision (2021)

Yesterday Lauri Vasama showed me this awesome Godbolt: struct S { static std::unique_ptr<S> make() noexcept; ~S(); static std::unique_ptr<S> factory() { std::unique_ptr<S> s = S::make(); return M(s); } }; void take_ownership(S*) noexcept; void test() { std::unique_ptr<S> p = S::factory()…

333

Storing Data in Control Flow

A decision that arises over and over when designing concurrent programs is whether to represent program state in control flow or as data. This post is about what that decision means and how to approach it. Done well, taking program state stored in data and storing it instead in control flow can make programs much…

338

Using uninitialized memory for fun and profit (2008)

This is the story of a clever trick that's been around for at least 35 years, in which array values can be left uninitialized and then read during normal operations, yet the code behaves correctly no matter what garbage is sitting in the array. Like the best programming tricks, this one is the right tool for the job…

343

Queues should be empty

I’ve been writing a pubsub listener for work recently and had this silly “shower thought”: the ideal queue should be empty. Why? If the queue is not empty, it means that whatever job is consuming from the queue is not keeping up with messages coming into it. Ok, then if queues are supposed to be empty, then what are…

345

Bfs 3.0: The Fastest Find Yet

bfs is a tool I wrote to do b readth- f irst s earch through a filesystem. It started out simply enough, but over the years it’s grown to include almost every feature from every other find implementation I could find, plus many of its own innovations. The new 3.0 release series includes the biggest new feature so far…

348

Link-Time Optimisation (LTO)

I recently started exploring link-time optimisation (LTO), which I used to think was just a single boolean choice in the compilation and linking workflow, and perhaps it was like that a while ago… I’ve learned that these days, there are many different dimensions of LTO across compilers and linkers today and more…

349

Writing a Debugger from Scratch: Stacks

(New to this series? Consider starting from part 1) At the end of the last post, DbgRs could finally set breakpoints. That was the last really critical feature needed for controlling execution of a program. Now that it can stop on an arbitrary function or code location, the next step is to find more information about…

350

NVMe SSD boot with the Raspberry Pi 5

In my video about the Raspberry Pi 5, I mentioned the new external PCIe port makes it possible to boot the standard Pi 5 model B directly off NVMe storage—an option which is much faster and more reliable than standard microSD storage (even with industrial-rated cards!). Enabling NVMe boot is pretty easy, you add a…

351

15k inserts/s with Rust and SQLite (2021)

There is this growing sentiment in tech that stacking more and more layers of complexity to reach the sacrosanct "infinite scalability" is not the way forward. First, because it rarely materializes: you need a lot of other things than fancy tech to reach millions of people. Second, because the tradeoffs

356

Exploring Windows XP on macOS ARM64

Windows XP I have a lot of fond memories of Windows XP and after feeling nostalgic, I was happy to find out that it’s relatively easy to take it for a spin on an ARM64 Mac using QEMU. I decided to install XP and an assortment of classic software one final time, taking screenshots of the whole process. This included…

357

Running SunOS 4 in QEMU (Sparc)

SunOS is a historical UNIX operating system widely used from the mid 80s into the early/mid 90s. Older versions of QEMU struggled to emulate the SPARC platform that SunOS ran on, but QEMU v7.2 supports SPARC well enough to install and run SunOS without any unusual workarounds.