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
    B

    Bannalia

    bannalia.blogspot.com · Personal blog · on HN since 2013

    Joaquín M López Muñoz writes about C++ data structures and Boost libraries, including hash tables, binary search layouts, and performance.

    Visit blogHN submissions
    Systems & PerformanceLanguages & Compilers
    What HN says

    Commenters cite it for Boost's unordered_flat_map, which they say beats Abseil in some benchmarks, and for the cache-friendly binary search post.

    Stats for nerds
    22HN people shared it
    57linked in comments
    713story points
    Apr 2026last shared
    2014people per year2026

    Top posts on HN

    1. 1
      Inside boost::unordered_flat_map
      5 people · 121 points · first shared 2022 · 44 comments on HN
    2. 2
      The perfect shape
      1 person · 99 points · first shared 2014 · 21 comments on HN
    3. 3
      Advancing the state of the art for std:unordered_map implementations
      2 people · 95 points · first shared 2022 · 51 comments on HN
    4. 4
      Cache-friendly binary search
      4 people · 83 points · first shared 2015 · 13 comments on HN
    5. 5
      C++: Maps on Chains
      2 people · 50 points · first shared 2025 · 20 comments on HN
    6. 6
      C++ encapsulation for Data-Oriented Design
      1 person · 44 points · first shared 2015 · 18 comments on HN
    7. 7
      Monadic lifting in C++
      1 person · 33 points · first shared 2014 · 17 comments on HN
    8. 8
      A better hash table
      1 person · 28 points · first shared 2014 · 1 comments on HN
    9. 9
      Deferred Argument Evaluation
      1 person · 24 points · first shared 2022 · 6 comments on HN
    10. 10
      Traversing a linearized tree
      1 person · 21 points · first shared 2015 · 5 comments on HN

    What HN people wrote when they linked it

    • dtfAug 2016

      I was very glad to find this page earlier this week, after scratching my head while implementing an isometric renderer for a client. I had assumed it would be a simple back-to-front order, but this page and a few others pointed out that the partial ordering required to 1) use an intersection test to build disjoint sets of confused objects, 2) use a pairwise order test to determine inter-object dependencies, 3 ) use a topological sort to resolve the ultimate drawing order.

      This method was implemented in some fantastic 1980s computer games, and the developer had named their technique "Filmation". Here's a discussion of that system, plus a demo of the rendering bug caused by not bothering to break dependency cycles as discussed in the main article:

      http://bannalia.blogspot.co.uk/2008/02/filmation-math.html

      (also I just found another with a load more details on the Filmation games: http://retrospec.sgn.net/users/nwalker/filmation/)

    • vitusNov 2024

      The reddit thread mentions that the author was probably going to write a blog post about it at some point; I went and found it so you don't have to.

      I was curious what exactly differentiates boost::unordered_flat_map from absl::flat_hash_map, and was not disappointed. It seems that the lion's share of the performance improvement comes from using more of the metadata for the reduced hash value, although there are a few other contributing factors.

      The blog post further describes where absl::flat_hash_map performs better: iteration (and consequently erasure), which is ironic given those are a couple of areas where I always felt that absl::flat_hash_map was especially weak. But, it makes sense to double down on Abseil's strengths as well as its shortcomings.

      https://bannalia.blogspot.com/2022/11/inside-boostunorderedflatmap.html

    • nlyJun 2015

      Indeed. std::unordered_* implementations are hogtied by the interface and complexity requirements in the C++ standard (it basically mandates chained buckets), and more generally the need to work with almost any hash function (linear probing would suck with crappy hash functions for example).

      Jo Muñoz wrote a cool blog series on the current implementations in circulation, the flaws with the interface, and how his implementation (Boost multi_index) made further optimisations despite the constraints.

      Don't miss the other two parts of the series - look under October on the right. He did extensive bookmarks in November as well.

      http://bannalia.blogspot.co.uk/2013/10/implementation-of-c-unordered.html

    • garaetjjteApr 2026

      I once did have a need for binary search in memory mapped files and I experimented with Eytzinger layout (which I learned from https://bannalia.blogspot.com/2015/06/cache-friendly-binary-search.html). It turned out that it was slower than plain binary search, I think because keys I was looking up were often clumped together thus it played quite well with cache anyway.

    • joaquintidesJun 2015

      You might also consult the entries given below, which take into account some late improvements in Boost.MultiIndex not present at the beginning of the series:

      http://bannalia.blogspot.com/2014/01/a-better-hash-table.html
      http://bannalia.blogspot.com/2014/01/a-better-hash-table-gcc.html
      http://bannalia.blogspot.com/2014/01/a-better-hash-table-clang.html

    • spacechild1Jul 2025

      It's worth mentioning that boost.unordered now also has a state-of-the-art open adressing hashtable (boost::unordered_flat_map) that beats abseil in some benchmarks, particularly for unsuccessful look-up: https://bannalia.blogspot.com/2022/11/inside-boostunorderedflatmap.html?m=1

    Related

    Eric Nieblerericniebler.com22 people

    C++20 Ranges

    Eric Niebler
    Personal · last shared 2024
    Martin Ankerlmartin.ankerl.com27 people

    Comprehensive C++ Hashmap Benchmarks 2022

    Martin Ankerl
    Personal · last shared 2026
    Marius Bancilamariusbancila.ro25 people

    What's new in C++26 (part 1)

    Marius Bancila
    Personal · last shared 2026
    Molecular Mattersblog.molecular-matters.com15 people

    Adventures in data-oriented design – Part 3b: Internal References

    Molecular Matters
    Personal · last shared 2025
    ThePhDthephd.dev112 people

    Embed is in C23

    ThePhD
    Personal · last shared 2026
    Andrzej's C++ blogakrzemi1.wordpress.com35 people

    A bug in GCC that may cause memory leaks in valid C++ programs

    Andrzej's C++ blog
    Personal · last shared 2025
    Probably Danceprobablydance.com74 people

    Fibonacci Hashing: The Optimization That the World Forgot

    Probably Dance
    Personal · last shared 2026
    Emil Ernerfeldtilikebigbits.com53 people

    The Myth of RAM (2014)

    Emil Ernerfeldt
    Personal · last shared 2026