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
    J

    Johnny's Software Lab

    johnnysswlab.com · Personal blog · on HN since 2022

    Ivica runs Johnny's Software Lab, a one-man consultancy, and writes on software performance, memory optimization, SIMD, and C++.

    Visit blogRSSHN submissions
    Systems & PerformanceProgramming
    What HN says

    HN commenters follow its multi-part series on memory and compilers, though one calls a particular article nitpicky on CPU parallelism and memory.

    Stats for nerds
    28HN people shared it
    66linked in comments
    577story points
    Jul 2026last shared
    2023people per year2026

    Top posts on HN

    1. 1
      The messy reality of SIMD (vector) functions
      2 people · 150 points · first shared 2025 · 81 comments on HN
    2. 2
      Unexpected ways memory subsystem interacts with branch prediction
      1 person · 89 points · first shared 2023 · 27 comments on HN
    3. 3
      Growing Buffers to Avoid Copying Data
      1 person · 42 points · first shared 2025 · 29 comments on HN
    4. 4
      A story of a large loop with a long instruction dependency chain
      2 people · 41 points · first shared 2024 · 4 comments on HN
    5. 5
      Link Time Optimizations: New Way to Do Compiler Optimizations
      1 person · 39 points · first shared 2025 · 33 comments on HN
    6. 6
      Avoiding register spills in vectorized code with many constants
      1 person · 38 points · first shared 2024 · 14 comments on HN
    7. 7
      Performance Debugging with LLVM-mca: Simulating the CPU
      2 people · 35 points · first shared 2025 · 14 comments on HN
    8. 8
      An optimizing compiler doesn't help much with long instruction dependencies
      1 person · 35 points · first shared 2025 · 6 comments on HN
    9. 9
      Loop Optimizations: taking matters into your hands (2021)
      2 people · 21 points · first shared 2022 · 6 comments on HN
    10. 10
      CPU Dispatching: Make your code both portable and fast (2020)
      1 person · 11 points · first shared 2024 · 1 comments on HN

    What HN people wrote when they linked it

    • _gabe_Mar 2023

      This whole article seems to be picking a lot of nits. I didn't read it too deeply, so feel free to correct me if I'm wrong, but the biggest complaints highlighted in the article are:

      1. Modern CPUs use instruction level parallelism (ILP)

      2. Memory isn't linear (you have separate caches, L1, L2, L3 and main memory)

      If you've ever debugged a C or C++ program in release, you've quickly found out about ILP. The code still maps relatively close to the hardware, it just won't run in the sequential order you've provided it in. Many C and C++ programmers know this and try to make the implicit assumptions in their code explicit to allow the compiler to reorder instructions more easily/reduce memory dependency chains[0].

      And I'm sure you've heard several proponents over the past few years (Mike Acton comes to mind) espousing data oriented design. This is an entire code methodology intended to help the CPU caches, and it shows an implicit understanding that memory is not linear. Heck, most C/C++ programmers realize that they're using VRAM all the time, and the memory locations they get aren't necessarily backed by physical memory until the OS sorts it out. This is especially transparent if you've ever done any sort of memmapping with files or played with virtual memory.

      Anyways, C doesn't necessarily map directly to the hardware, but it's a heck of a lot easier to intuit what a C program will end up doing on the CPU vs what a Python program will do. And most C/C++ programmers…

    • ibogiNov 2024

      Hi!

      I am Ivica, I am the guy working for Johnny's Software Lab (johnnysswlab.com) - web site and one man company that specializes in software performance. A few times I saw posts from my web site here, that means at least some people find this topic interesting.

      I know people don't like sales pitches, but this is exactly what it is, admins please forgive me.

      For all software developers who want to speed up their software, I created two vectorization workshops, one which deals with AVX on Intel and AMD CPUs and the other for NEON on ARM CPUs. They are two days long, and cover programming using compiler intrinsics. No knowledge of vectorization is required, but you do need to grasp basic concepts of C and C++ (loops, functions, arrays, bit manipulation).

      We had a pilot AVX workshop two weeks ago, and the feedback was very good: the workshop is interesting, challenging but not too difficult and teaches useful things you can immediately use to speed up your software.

      The workshop consists of lectures and exercises and we go from essentially no knowledge to everything you need to know about vectorization in two days.

      If you are interested in learning about vector programming, you can learn more info about it here, including topics that we will cover, available dates and prices.

      https://johnnysswlab.com/avx-neon-vectorization-workshop/

      Thank you for your attention and have a good day!

      Ivica

    • rramadassJul 2026

      Caches and Memory Systems have to be looked at from three related perspectives viz. a) Hardware/SoC/Physical level b) OS/Compiler system software level c) Applications usage level.

      To that end;

      1) Buy/Beg/Borrow/Steal the Curt Schimmel book mentioned above. That one book will teach you all about how OSes manage caches/memory for SMP multiprocessing systems. You really get to understand multiprocessing at a fundamental level.

      2) Memory Systems: Cache, DRAM, Disk by Bruce Jacob et al. - Old classic and a comprehensive book on all aspects of memory systems. Supplement with papers on newer technologies as needed.

      3) Ulrich Drepper's classic What every Programmer should know about Memory - https://news.ycombinator.com/item?id=36420502

      4) Cache-Oblivious Algorithm - https://en.wikipedia.org/wiki/Cache-oblivious_algorithm See in particular, Harald Prokop's thesis on the above linked to under "References" section.

      5) Cache-aware Programming pattern from the book Game Programming Patterns - https://gameprogrammingpatterns.com/data-locality.html

      6) There are lots more resources on cache-aware programming and using compiler builtins to help you do it. Here is a list of tips - https://johnnysswlab.com/make-your-programs-run-faster-by-better-using-the-data-cache/ This website has a lot of info. on all aspects of memory optimization.

      7) AoS and SoA - https://en.wikipedia.org/wiki/AoS_and_SoA

    • g0xA52A2AMar 2023

      Part 2 is also now available https://johnnysswlab.com/decreasing-the-number-of-memory-accesses-the-compilers-secret-life-2-2/

    Related

    Our Machineryourmachinery.com36 people

    Virtual Memory Tricks

    Our Machinery
    Company · last shared 2022
    John Regehrblog.regehr.org401 people

    Teaching C

    John Regehr
    Personal · last shared 2026
    Arm Community Blogcommunity.arm.com147 people

    An update on GNU performance

    Arm Community Blog
    Company · last shared 2025
    Probably Danceprobablydance.com74 people

    Fibonacci Hashing: The Optimization That the World Forgot

    Probably Dance
    Personal · last shared 2026
    Random ASCIIrandomascii.wordpress.com274 people

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

    Random ASCII
    Personal · last shared 2026
    Interconnectsinterconnects.ai74 people

    A look at Apple's technical approach to AI including core model performance etc.

    Interconnects
    Personal · last shared 2026
    Herb Suttergotw.ca84 people

    Ritchie, Stroustrup, and Gosling interview

    Herb Sutter
    Personal · last shared 2026
    Josh Habermanblog.reverberate.org105 people

    Parsing Protobuf at 2+GB/S: How I Learned to Love Tail Calls in C

    Josh Haberman
    Personal · last shared 2026