Skip to content
HomeVideosBooksBlogs
AllTop postsTopics
Podcasts
HistoryListsWatch laterLiked videosFollowing

The videos, books, blogs and podcasts Hacker News keeps recommending, all in one place.

VideosBooksBlogsPodcastsAboutPrivacySettings

Data from Hacker News, HackerTube, HackerBooks, HackerBlogs and Open Library. Credits · Not affiliated with Y Combinator.

HomeVideosBooksBlogsPodcasts
Ctrl K
    M

    mazzo.li

    mazzo.li · Personal blog · on HN since 2013

    Francesco Mazzoli writes technical posts on Linux performance, io_uring, CPU behavior, SIMD, and type theory.

    Visit blogRSSHN submissions
    Systems & PerformanceProgrammingOpen Source & Linux
    What HN says

    HN commenters praise its performance posts, such as speeding up atan2f and beating the L1 cache, and link its Linux threads and huge pages articles.

    Stats for nerds
    35HN people shared it
    45linked in comments
    3.1Kstory points
    Jun 2026last shared
    2021people per year2026

    Top posts on HN

    1. 1
      How fast are Linux pipes anyway?
      8 people · 961 points · first shared 2022 · 200 comments on HN
    2. 2
      Beating the L1 cache with value speculation (2021)
      6 people · 470 points · first shared 2021 · 80 comments on HN
    3. 3
      How to stop Linux threads cleanly
      3 people · 306 points · first shared 2024 · 85 comments on HN
    4. 4
      Speeding up atan2f
      2 people · 248 points · first shared 2021 · 103 comments on HN
    5. 5
      Lánczos Interpolation Explained (2022)
      2 people · 230 points · first shared 2022 · 17 comments on HN
    6. 6
      When static makes your C code 10 times faster
      1 person · 201 points · first shared 2021 · 108 comments on HN
    7. 7
      Using GDPR to obtain one’s data as JSON
      1 person · 182 points · first shared 2021 · 133 comments on HN
    8. 8
      The essence of Reed-Solomon coding
      1 person · 168 points · first shared 2022 · 41 comments on HN
    9. 9
      Waiting for many things at once with io_uring
      3 people · 126 points · first shared 2024 · 30 comments on HN
    10. 10
      How to store Go pointers from assembly
      1 person · 73 points · first shared 2025 · 20 comments on HN

    What HN people wrote when they linked it

    • westurnerAug 2023

      https://mazzo.li/posts/fast-pipes.html#splicing :

      > In general when we write to a socket, or a file, or in our case a pipe, we’re first writing to a buffer somewhere in the kernel, and then let the kernel do its work. In the case of pipes, the pipe is a series of buffers in the kernel. All this copying is undesirable if we’re in the business of performance.

      > Luckily, Linux includes system calls to speed things up when we want to move data to and from pipes, without copying. Specifically:

      > - splice moves data from a pipe to a file descriptor, and vice-versa.

      > - vmsplice moves data from user memory into a pipe.

      > Crucially, both operations work without copying anything.

      But then to scale to more than one node, everything has to be copied from the pipe buffer to the network socket buffer; unless splice()'ing from a pipe to a socket is Zero-copy like sendfile() (which doesn't work with pipes IIRC).

      "SOCKMAP - TCP splicing of the future" (2019)
      https://blog.cloudflare.com/sockmap-tcp-splicing-of-the-future/

    • bagxrvxpepznJun 2026

      > On modern CPUs, avoiding branch misprediction is a key technique to speed up programs.

      This is true but it's misleading. The reality is that modern out-of-order superscalar CPUs are so good at branch prediction that it's nearly always better to branch in a tight loop (to allow more ILP) than introduce a data-dependency in a tight loop (which limits ILP). Cf. https://mazzo.li/posts/value-speculation.html, https://yarchive.net/comp/linux/cmov.html

      Branchless code should generally be avoided because modern CPUs are not designed to optimize that use case. There are exceptions of course, but those are exceptions.

    • dmoyJul 2024

      Well in the articles case, it's the linked list `next` pointers:

      https://mazzo.li/posts/value-speculation.html#value-speculation-bailing-us-out

      In a happy case, those will be laid out sequentially in memory so you can guess the value of the pointer easily.

      (That said your comment still stands, since using linked lists in the first place is much more rare). But I suppose there's probably a lot of other domains where you might have a performance critical loop where some hacky guessing might work.

    • ashvardanianNov 2024

      Surprisingly, I only came across Francesco's blog this month. I stumbled upon the 2021 post "Speeding up atan2f by 50x" while searching for others who have to reimplement trigonometry in SIMD every other year. I've also enjoyed "Beating the L1 cache with value speculation" from the same year, as well as the 2013 Agda sorting example.

      Highly recommend checking it out: https://mazzo.li/archive.html

    • rostayobOct 2025

      I talk about the cancelability state and how it can help us shortly after that statement: https://mazzo.li/posts/stopping-linux-threads.html#controlled-thread-cancellation . In hindsight I should have made a forward reference to that section when talking about C++. My broad point was that combining C++ exceptions and thread cancellation is fraught with danger and imo best avoided.

    • adrianmonkMay 2026

      The article mentions this: "A few years back, Linux added a way for software to wait on several events at once, which is something Windows had built in for decades, but Linux didn't."

      This is not really my area, but from a quick web search, I think they mean io_uring. Here's a blog post about it: https://mazzo.li/posts/uring-multiplex.html

    Related

    Joe Damatotimetobleed.com39 people

    American Express fails miserably at basic security

    Joe Damato
    Personal · last shared 2022
    Probably Danceprobablydance.com74 people

    Fibonacci Hashing: The Optimization That the World Forgot

    Probably Dance
    Personal · last shared 2026
    Chips and Cheesechipsandcheese.com185 people

    Google's Liquid Cooling

    Chips and Cheese
    Publication · last shared 2026
    Bryan O'Sullivanserpentine.com49 people

    Github is making me feel stupid(er)

    Bryan O'Sullivan
    Personal · last shared 2021
    Random ASCIIrandomascii.wordpress.com274 people

    There are only four billion floats, so test them all (2014)

    Random ASCII
    Personal · last shared 2026
    PyPy Blogpypy.org183 people

    PyPy has moved to Git, GitHub

    PyPy Blog
    Company · last shared 2026
    Unlimited Noveltyunlimitednovelty.com42 people

    Node.js has jumped the shark

    Unlimited Novelty
    Personal · last shared 2023
    Stefano Mazzocchibetaversion.org/~stefano24 people

    Stefano’s Linotype: Why Programmers Suck at CSS Design (CSS Guide)

    Stefano Mazzocchi
    Personal · last shared 2012