# Data structures

Data structures are ways to organize data in a computer, usually to save time or space.

This is one page of public article previews, not the complete archive. Follow Next page to continue. Summaries are not the original full articles.

## How fast is C++23's std::flat\_map?

DevFeed: [How fast is C++23's std::flat\_map?](<https://devfeed.tech/articles/how-fast-is-c-23-s-std-flat-map-31465.md>)

Original publisher: [Read original article](<https://lemire.me/blog/2026/09/16/how-fast-is-c23s-stdflat_map/>)

Author: Daniel Lemire

Published: 2026-09-16T20:26:36Z

Content type: article

Language: en

Sources: [Daniel Lemire](<https://devfeed.tech/sources/daniel-lemire.md>)

Topics: [Data structures](<https://devfeed.tech/topics/data-structures.md>), [Library](<https://devfeed.tech/topics/library.md>), [gcc](<https://devfeed.tech/topics/gcc.md>), [LLVM](<https://devfeed.tech/topics/llvm.md>), [clang](<https://devfeed.tech/topics/clang.md>)

Tags: [array](<https://devfeed.tech/tags/array.md>), [arrays](<https://devfeed.tech/tags/arrays.md>), [clang](<https://devfeed.tech/tags/clang.md>), [gcc](<https://devfeed.tech/tags/gcc.md>), [llvm](<https://devfeed.tech/tags/llvm.md>), [overhead](<https://devfeed.tech/tags/overhead.md>), [speed](<https://devfeed.tech/tags/speed.md>), [standard-library](<https://devfeed.tech/tags/standard-library.md>)

### AI overview

This article benchmarks C++23's std::flat_map, a sorted container backed by parallel arrays of keys and values. It explains serialization and loading considerations, then compares insertion and lookup performance with std::map. Random-order insertion becomes quadratic as the container grows, while increasing-order or bulk insertion is much faster; random lookups can also be faster for large maps because std::flat_map uses less memory.

### Source excerpt

C++23 added a new type to the standard library: std::flat_map. There is also a std::flat_set and other variants, but let me focus on std::flat_map. A flat map is a sorted vector of keys next to a vector of values. A query is a binary search over the sorted keys. You need a recent standard library: ... Continue reading How fast is C++23's std::flat_map?

## OpenVDB Introduces SIMD Framework With Some 2~4x Performance Improvements

DevFeed: [OpenVDB Introduces SIMD Framework With Some 2~4x Performance Improvements](<https://devfeed.tech/articles/openvdb-introduces-simd-framework-with-some-2-4x-performance-improvements-31411.md>)

Original publisher: [Read original article](<https://www.phoronix.com/news/OpenVDB-SIMD--Framework>)

Author: Michael Larabel

Published: 2026-09-16T10:05:23Z

Content type: news

Language: en

Sources: [Phoronix](<https://devfeed.tech/sources/phoronix.md>)

Topics: [Data structures](<https://devfeed.tech/topics/data-structures.md>), [Tooling](<https://devfeed.tech/topics/tooling.md>), [x86](<https://devfeed.tech/topics/x86.md>), [releases](<https://devfeed.tech/topics/releases.md>), [cudnn](<https://devfeed.tech/topics/cudnn.md>), [Open Source](<https://devfeed.tech/topics/open-source.md>)

Tags: [avx](<https://devfeed.tech/tags/avx.md>), [command-line](<https://devfeed.tech/tags/command-line.md>), [cuda](<https://devfeed.tech/tags/cuda.md>), [data](<https://devfeed.tech/tags/data.md>), [data-structure](<https://devfeed.tech/tags/data-structure.md>), [desktop-linux](<https://devfeed.tech/tags/desktop-linux.md>), [github](<https://devfeed.tech/tags/github.md>), [kernels](<https://devfeed.tech/tags/kernels.md>), [linux-benchmarking](<https://devfeed.tech/tags/linux-benchmarking.md>), [linux-hardware-benchmarks](<https://devfeed.tech/tags/linux-hardware-benchmarks.md>), [linux-hardware-reviews](<https://devfeed.tech/tags/linux-hardware-reviews.md>), [linux-how-to](<https://devfeed.tech/tags/linux-how-to.md>), [linux-performance](<https://devfeed.tech/tags/linux-performance.md>), [linux-server-benchmarks](<https://devfeed.tech/tags/linux-server-benchmarks.md>), [open-source-graphics](<https://devfeed.tech/tags/open-source-graphics.md>), [performance](<https://devfeed.tech/tags/performance.md>), [phoronix](<https://devfeed.tech/tags/phoronix.md>), [phoronix-test-suite](<https://devfeed.tech/tags/phoronix-test-suite.md>), [release](<https://devfeed.tech/tags/release.md>), [ubuntu-benchmarks](<https://devfeed.tech/tags/ubuntu-benchmarks.md>), [ubuntu-hardware](<https://devfeed.tech/tags/ubuntu-hardware.md>), [x86](<https://devfeed.tech/tags/x86.md>)

### AI overview

OpenVDB 13.1 introduces a SIMD framework using Agner Fog's VectorClass Library for explicit x86 vectorization up to AVX-512. Adapted point transfer algorithms reportedly achieve 2x to 4x performance improvements on modern AVX-512 x86_64 CPUs. The release also includes NanoVDB CUDA resource-management and kernel improvements, plus updates to vdb_tool.

### Source excerpt

OpenVDB is the sparse volume data structure and tooling library maintained by the Academy Software Foundation. OpenVDB in turn is used by various CGI software for dealing with sparse volumetric data such as Houdini, RenderMan, and Cinema 4D to the open-source Blender. It's even won an Academy Award for technical achievement while now in 2026 it's finally establishing a SIMD framework for better leveraging modern x86 ISA capabilities...

## Profiling App Engine Memcached

DevFeed: [Profiling App Engine Memcached](<https://devfeed.tech/articles/profiling-app-engine-memcached-27394.md>)

Original publisher: [Read original article](<http://engineering.khanacademy.org/posts/memcached-profiling.htm>)

Author: Khan Academy

Published: 2017-05-01T22:00:00Z

Content type: article

Language: en

Sources: [Khan Academy](<https://devfeed.tech/sources/khan-academy.md>)

Topics: [Latency](<https://devfeed.tech/topics/latency.md>), [Logging](<https://devfeed.tech/topics/logging.md>), [Data structures](<https://devfeed.tech/topics/data-structures.md>)

Tags: [engineering](<https://devfeed.tech/tags/engineering.md>), [infrastructure](<https://devfeed.tech/tags/infrastructure.md>), [latency](<https://devfeed.tech/tags/latency.md>), [logging](<https://devfeed.tech/tags/logging.md>), [memcached](<https://devfeed.tech/tags/memcached.md>), [news](<https://devfeed.tech/tags/news.md>), [patterns](<https://devfeed.tech/tags/patterns.md>), [profiling](<https://devfeed.tech/tags/profiling.md>), [tests](<https://devfeed.tech/tags/tests.md>)

### AI overview

Khan Academy engineers profile App Engine Memcached to estimate access latency and evaluate whether on-demand content fetching could support separate content trees for each language. Most requests showed 1-4 ms latency, usually below 10 ms, while a single multi-get performed similarly to a single get.

### Source excerpt

By Ben Kraft Last year, Willow wrote about how we optimized our in-memory content data to take up ... Read more

## Announcing Redis 8.10: Compact Hash, JSONPath extensions, performance improvements, & more

DevFeed: [Announcing Redis 8.10: Compact Hash, JSONPath extensions, performance improvements, & more](<https://devfeed.tech/articles/announcing-redis-8-10-compact-hash-jsonpath-extensions-performance-improvements-more-21090.md>)

Original publisher: [Read original article](<https://redis.io/blog/announcing-redis-810-compact-hash-jsonpath-extensions-performance-improvements-and-more/>)

Author: Bosmat Tuvel

Published: 2026-09-14T00:00:00Z

Content type: release

Language: en

Sources: [Redis Blog](<https://devfeed.tech/sources/redis-blog.md>)

Topics: [Redis](<https://devfeed.tech/topics/redis.md>), [Data structures](<https://devfeed.tech/topics/data-structures.md>), [Data Management](<https://devfeed.tech/topics/data-management.md>), [Open Source](<https://devfeed.tech/topics/open-source.md>)

Tags: [data-management](<https://devfeed.tech/tags/data-management.md>), [improvements](<https://devfeed.tech/tags/improvements.md>), [memory](<https://devfeed.tech/tags/memory.md>), [new-features](<https://devfeed.tech/tags/new-features.md>), [operations](<https://devfeed.tech/tags/operations.md>), [performance](<https://devfeed.tech/tags/performance.md>), [redis](<https://devfeed.tech/tags/redis.md>), [streams](<https://devfeed.tech/tags/streams.md>), [tech](<https://devfeed.tech/tags/tech.md>), [time-series](<https://devfeed.tech/tags/time-series.md>)

### AI overview

Redis 8.10 in Redis Open Source introduces compact hashes, incremental backup and restore, JSONPath syntax extensions, more flexible Stream consumption, new Set cardinality operations, atomic movement of multiple List elements, and enhanced Time Series capabilities. The release also improves memory efficiency, throughput, and operational reliability at scale.

### Source excerpt

Redis 8.10 in Redis Open Source is now available, delivering improvements that make Redis more memory efficient, expressive, and easier to operate at scale. Highlights include compact hashes with up to 50% lower memory usage and 2x higher hash loadin...

## ParparVM Reduces HashMap Miss Costs with a New Probe Sequence

DevFeed: [ParparVM Reduces HashMap Miss Costs with a New Probe Sequence](<https://devfeed.tech/articles/faster-maps-chasing-swiss-speed-19318.md>)

Original publisher: [Read original article](<https://www.codenameone.com/blog/hashmap-misses-probe-sequence/>)

Author: Shai Almog

Published: 2026-09-13T00:00:00Z

Content type: article

Language: en

Sources: [CodeName One](<https://devfeed.tech/sources/codename-one.md>)

Topics: [Java](<https://devfeed.tech/topics/java.md>), [Data structures](<https://devfeed.tech/topics/data-structures.md>), [Benchmark](<https://devfeed.tech/topics/benchmark.md>)

Tags: [benchmark](<https://devfeed.tech/tags/benchmark.md>), [compare](<https://devfeed.tech/tags/compare.md>), [java](<https://devfeed.tech/tags/java.md>)

### AI overview

This article examines pathological missing-key performance in ParparVM's Java HashMap. It identifies linear probing through dense key runs and tombstones as the cause, then describes a fix that preserves the first probe while using a CPython-style recurrence for subsequent probes. The change improved misses but slowed some dense-key construction and scan workloads by 1.8 to 2.2 times in the measured cases.

### Source excerpt

ParparVM fixes pathological map misses and extends tagged boxed values. Probe counts, allocation coverage, and regressions show where ordinary Java collections became cheaper.

## Quiz: Common Python Data Structures (Guide)

DevFeed: [Quiz: Common Python Data Structures (Guide)](<https://devfeed.tech/articles/quiz-common-python-data-structures-guide-4402.md>)

Original publisher: [Read original article](<https://realpython.com/quizzes/common-python-data-structures/>)

Author: Real Python

Published: 2026-09-04T12:00:00Z

Content type: article

Language: en

Sources: [Real Python](<https://devfeed.tech/sources/real-python.md>)

Topics: [Data structures](<https://devfeed.tech/topics/data-structures.md>), [Python](<https://devfeed.tech/topics/python.md>)

Tags: [guide](<https://devfeed.tech/tags/guide.md>), [python](<https://devfeed.tech/tags/python.md>), [tutorial](<https://devfeed.tech/tags/tutorial.md>)

### AI overview

An interactive 14-question quiz testing understanding of Python's built-in data structures, including dictionaries, arrays, records, sets, multisets, stacks, queues, and priority queues.

### Source excerpt

Test your grasp of Python's built-in data structures. Work through dictionaries, arrays, records, sets, stacks, queues, and priority queues.

## Python sets and dictionaries can have quadratic-time performance

DevFeed: [Python sets and dictionaries can have quadratic-time performance](<https://devfeed.tech/articles/python-sets-and-dictionaries-can-have-quadratic-time-performance-29426.md>)

Original publisher: [Read original article](<https://lemire.me/blog/2026/09/03/python-sets-and-dictionaries-can-have-quadratic-time-performance/>)

Author: Daniel Lemire

Published: 2026-09-03T14:01:45Z

Content type: article

Language: en

Sources: [Daniel Lemire](<https://devfeed.tech/sources/daniel-lemire.md>)

Topics: [Python](<https://devfeed.tech/topics/python.md>), [Data structures](<https://devfeed.tech/topics/data-structures.md>), [hash](<https://devfeed.tech/topics/hash.md>), [CPU Cache](<https://devfeed.tech/topics/cpu-cache.md>)

Tags: [array](<https://devfeed.tech/tags/array.md>), [cpu-cache](<https://devfeed.tech/tags/cpu-cache.md>), [data-structure](<https://devfeed.tech/tags/data-structure.md>), [hash](<https://devfeed.tech/tags/hash.md>), [performance](<https://devfeed.tech/tags/performance.md>), [python](<https://devfeed.tech/tags/python.md>)

### AI overview

The article explains why Python sets and dictionaries are not formally constant-time in all cases. Hash collisions can make insertions and membership checks take quadratic time, while growing data structures can also incur reallocation and slower memory access as they exceed CPU cache capacity.

### Source excerpt

In Python, the dict data structure is the conventional key-value structure. E.g., you might store a list of names as keys and have their phone numbers as values. Valentin Ignatev wrote this amusing post on X: It is indeed widely believed that, in the strict sense, the dict data structure and its companion, the set ... Continue reading Python sets and dictionaries can have quadratic-time performance

## 8 Redis Use Cases Engineers Should Know

DevFeed: [8 Redis Use Cases Engineers Should Know](<https://devfeed.tech/articles/8-redis-use-cases-engineers-should-know-18036.md>)

Original publisher: [Read original article](<https://blog.levelupcoding.com/p/redis-use-cases-engineers-should-know>)

Author: Nikki Siapno

Published: 2026-09-01T12:54:52Z

Content type: tutorial

Language: en

Sources: [Level Up Coding System Design Newsletter](<https://devfeed.tech/sources/level-up-coding-system-design-newsletter.md>)

Topics: [Redis](<https://devfeed.tech/topics/redis.md>), [Data structures](<https://devfeed.tech/topics/data-structures.md>), [Caching](<https://devfeed.tech/topics/caching.md>), [real-time](<https://devfeed.tech/topics/real-time.md>), [Server](<https://devfeed.tech/topics/server.md>), [systems](<https://devfeed.tech/topics/systems.md>)

Tags: [caching](<https://devfeed.tech/tags/caching.md>), [data-structure](<https://devfeed.tech/tags/data-structure.md>), [real-time](<https://devfeed.tech/tags/real-time.md>), [redis](<https://devfeed.tech/tags/redis.md>), [server](<https://devfeed.tech/tags/server.md>), [use-cases](<https://devfeed.tech/tags/use-cases.md>)

### AI overview

This article explains that Redis is more than a caching system. It describes how Redis data structures support real-time application patterns such as counters, sessions, queues, leaderboards, rate limiting, coordination, event logs, notifications, and expiring state.

### Source excerpt

Most engineers know Redis for caching. But that's only the beginning...

## Generic Methods

DevFeed: [Generic Methods](<https://devfeed.tech/articles/generic-methods-2356.md>)

Original publisher: [Read original article](<https://go.dev/blog/generic-methods>)

Author: Mark Freeman

Published: 2026-08-26T00:00:00Z

Content type: article

Language: en

Sources: [The Go Blog](<https://devfeed.tech/sources/the-go-blog.md>)

Topics: [Go Language](<https://devfeed.tech/topics/go-language.md>), [Go](<https://devfeed.tech/topics/go.md>), [Data structures](<https://devfeed.tech/topics/data-structures.md>), [Sorting](<https://devfeed.tech/topics/sorting.md>)

Tags: [feature](<https://devfeed.tech/tags/feature.md>), [go](<https://devfeed.tech/tags/go.md>), [mapping](<https://devfeed.tech/tags/mapping.md>), [sorting](<https://devfeed.tech/tags/sorting.md>), [types](<https://devfeed.tech/tags/types.md>)

### AI overview

Go 1.27 introduces generic methods, extending Go's type-parameter capabilities from generic types and functions to methods. The article explains the design rationale and shows how generic methods improve organization, local scoping, and readability for operations such as transforming linked-list values.

### Source excerpt

Go 1.27 adds generic methods--a highly desired language feature.

## Working With Python's deque

DevFeed: [Working With Python's deque](<https://devfeed.tech/articles/working-with-python-s-deque-4373.md>)

Original publisher: [Read original article](<https://realpython.com/courses/working-with-pythons-deque/>)

Author: Real Python

Published: 2026-08-18T14:00:00Z

Content type: tutorial

Language: en

Sources: [Real Python](<https://devfeed.tech/sources/real-python.md>)

Topics: [Data structures](<https://devfeed.tech/topics/data-structures.md>)

Tags: [benchmark](<https://devfeed.tech/tags/benchmark.md>), [code](<https://devfeed.tech/tags/code.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [learn](<https://devfeed.tech/tags/learn.md>), [python](<https://devfeed.tech/tags/python.md>), [tutorial](<https://devfeed.tech/tags/tutorial.md>), [video](<https://devfeed.tech/tags/video.md>)

### AI overview

A video tutorial on using Python's deque for efficient operations at both ends, including queues, stacks, bounded histories, and performance characteristics.

### Source excerpt

Learn how to use Python's deque to efficiently append and pop items from both ends, build queues and stacks, and set maxlen for bounded history.

## Go 1.27 will make some allocations cheaper

DevFeed: [Go 1.27 will make some allocations cheaper](<https://devfeed.tech/articles/go-1-27-will-make-some-allocations-cheaper-29422.md>)

Original publisher: [Read original article](<https://lemire.me/blog/2026/08/15/go-1-27-will-make-some-allocations-cheaper/>)

Author: Daniel Lemire

Published: 2026-08-15T20:59:19Z

Content type: article

Language: en

Sources: [Daniel Lemire](<https://devfeed.tech/sources/daniel-lemire.md>)

Topics: [Go Language](<https://devfeed.tech/topics/go-language.md>), [Programming](<https://devfeed.tech/topics/programming.md>), [Compiler](<https://devfeed.tech/topics/compiler.md>), [Data structures](<https://devfeed.tech/topics/data-structures.md>)

Tags: [compiler](<https://devfeed.tech/tags/compiler.md>), [data-structure](<https://devfeed.tech/tags/data-structure.md>), [go](<https://devfeed.tech/tags/go.md>), [memory-management](<https://devfeed.tech/tags/memory-management.md>), [programming](<https://devfeed.tech/tags/programming.md>), [programming-languages](<https://devfeed.tech/tags/programming-languages.md>)

### AI overview

The article explains Go's stack and heap allocations, including how escaping values, slices, and dynamic data structures can cause heap allocations. It notes that Go 1.27 is intended to make some heap allocations cheaper, while the supplied excerpt does not specify the implementation details.

### Source excerpt

Like most programming languages, Go has both stack allocations, whose lifetime is limited to the current function, and dynamic (or heap) allocations. The name stack comes from the fact that the memory management is somewhat trivial. There is typically one stack per thread (or goroutine in Go). When a function needs memory, it simply appends ... Continue reading Go 1.27 will make some allocations cheaper

## Keleusma Research Spike: What It Costs to Compile a Data Structure Whose Shape Is Already Decided

DevFeed: [Keleusma Research Spike: What It Costs to Compile a Data Structure Whose Shape Is Already Decided](<https://devfeed.tech/articles/keleusma-research-spike-what-it-costs-to-compile-a-data-structure-whose-shape-is-already-decided-39755.md>)

Original publisher: [Read original article](<https://sgeos.github.io/engineering/compilers/verification/2026/08/09/cost_of_compiling_aggregates.html>)

Author: Brendan Sechter

Published: 2026-08-09T09:00:00Z

Content type: article

Language: en

Sources: [Brendan A R Sechter's Development Blog](<https://devfeed.tech/sources/brendan-a-r-sechter-s-development-blog.md>)

Topics: [Compiler](<https://devfeed.tech/topics/compiler.md>), [Back end](<https://devfeed.tech/topics/backend.md>), [Data structures](<https://devfeed.tech/topics/data-structures.md>)

Tags: [arrays](<https://devfeed.tech/tags/arrays.md>), [case-study](<https://devfeed.tech/tags/case-study.md>), [compiler](<https://devfeed.tech/tags/compiler.md>), [compilers](<https://devfeed.tech/tags/compilers.md>), [data-structure](<https://devfeed.tech/tags/data-structure.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [research](<https://devfeed.tech/tags/research.md>), [verification](<https://devfeed.tech/tags/verification.md>)

### AI overview

This case study examines the cost of compiling aggregate data types in the Keleusma compiler backend. Measurements of 331 aggregate operations found that most reduce to constant offsets and typed loads, challenging an estimate based on the feature's general name rather than its actual instances.

### Source excerpt

The largest remaining item in a compiler backend was estimated at a quarter's work. Measured, it is pointer arithmetic over compile-time constants, and two of the three representation forms it was supposed to need account for two operations in the entire corpus. The item is aggregate data types, meaning structs, tuples, arrays and enumerations. It blocks 34.5 percent of the corpus, more than every other unimplemented feature combined, and it had never been scoped because everyone knew it was large. Everyone was reasoning from the wrong artefact. Aggregates are large in a compiler that must decide their layout. This compiler decided it already, in an earlier pass, and bakes the answer into the instruction stream. What reaches the backend is not a type system. It is a byte offset and a scalar kind. The measurement that establishes this took twenty minutes to write and two and a half seconds to run. It reports that of 331 aggregate operations in the corpus, 300 are a constant offset and a typed load, 2 need anything resembling a value representation, and 0 use the general mechanism the instruction set still carries. This article reports that, and reports why the author's own recommendation to run it deserves more scepticism than the result. What this is a case study of The setting is compiler backend scoping and the project is Keleusma, whose backend is described in the first, second and third articles of this series. No compiler background is required. The general shape is estimating the cost of a feature from its name rather than from its instances. "Aggregate data types" names something with a large literature, a hard general case, and a well-known set of representation decisions. None of that is evidence about the work in front of you, and the gap between the category and the instance is where the estimate went wrong. The transferable question is what remains once a decision has already been made upstream. The answer is often mechanical, and the mechanical residue

## Weekly recommendations for reading, watching, and trying

DevFeed: [Weekly recommendations for reading, watching, and trying](<https://devfeed.tech/articles/things-1-25613.md>)

Original publisher: [Read original article](<https://www.romainguy.dev/posts/2026/things-1/>)

Author: Romain Guy

Published: 2026-08-06T00:00:00Z

Content type: opinion

Language: en

Sources: [Posts on Romain Guy](<https://devfeed.tech/sources/posts-on-romain-guy.md>)

Topics: [C++](<https://devfeed.tech/topics/c-plus-plus.md>), [Data structures](<https://devfeed.tech/topics/data-structures.md>), [benchmarking](<https://devfeed.tech/topics/benchmarking.md>), [GPU](<https://devfeed.tech/topics/gpu.md>), [render](<https://devfeed.tech/topics/render.md>), [Open Source](<https://devfeed.tech/topics/open-source.md>), [Cloud](<https://devfeed.tech/topics/cloud.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [articles](<https://devfeed.tech/tags/articles.md>), [benchmarking](<https://devfeed.tech/tags/benchmarking.md>), [books](<https://devfeed.tech/tags/books.md>), [c-plus-plus](<https://devfeed.tech/tags/c-plus-plus.md>), [cloud](<https://devfeed.tech/tags/cloud.md>), [developer](<https://devfeed.tech/tags/developer.md>), [gpu](<https://devfeed.tech/tags/gpu.md>), [graphics](<https://devfeed.tech/tags/graphics.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [links](<https://devfeed.tech/tags/links.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [render](<https://devfeed.tech/tags/render.md>), [videos](<https://devfeed.tech/tags/videos.md>)

### AI overview

A weekly list of recommendations covering C++26 std::hive internals and performance, rendering and GPU techniques, animation, mountaineering, films, an open-source cloud computer, and parallel Delaunay triangulation.

### Source excerpt

Here is a list of tings I read/watched/played/etc. this week that you might find interesting or enjoyable: Things to read Link to heading A Deep Dive into C++26 std::hive: The Ultimate Container for Active Data -- Some details about the internals of C++ 26's new data structure. How fast is C++26's std::hive? -- Pretty self-explanatory and useful numbers to keep in mind. A Spectral BSSRDF for Shading Human Skin -- A spectral shading model that can be used to render different skin tones. On the Accuracy of Surface Scattering Theories -- Another reason why our rendering models are not quite good enough. A Texture Lookup Approach to Bézier Curve Evaluation on the GPU -- A clever use of GPU textures units to render Bézier curves efficiently. Haikyu!! -- I've been re-reading this manga. The anime is also worth it, for the animation itself. Annapurna: First Conquest of an 8000-meter Peak -- Maurice Herzog's account of the first successful ascent of Annapurna. Read the French original if you can. And you might want to read True Summit afterwards. Things to watch Link to heading Benchmarking - It's About Time -- Benchmarking is hard, but Matt Godbolt makes it fun and interesting. Nirvanna the Band the Show the Movie -- I watched it without knowing what it was really about. You should do the same, it takes an unexpected turn. Things I want to try Link to heading Wasmo -- An Open Source "cloud computer". delaunay32 -- Fast, parallel 2D Delaunay triangulation using exact integer predicates.

## How fast is C++26's std::hive?

DevFeed: [How fast is C++26's std::hive?](<https://devfeed.tech/articles/how-fast-is-c-26-s-std-hive-29419.md>)

Original publisher: [Read original article](<https://lemire.me/blog/2026/08/02/how-fast-is-c26s-stdhive/>)

Author: Daniel Lemire

Published: 2026-08-02T17:00:10Z

Content type: article

Language: en

Sources: [Daniel Lemire](<https://devfeed.tech/sources/daniel-lemire.md>)

Topics: [container](<https://devfeed.tech/topics/container.md>), [Data structures](<https://devfeed.tech/topics/data-structures.md>), [cpu](<https://devfeed.tech/topics/cpu.md>), [intel](<https://devfeed.tech/topics/intel.md>)

Tags: [compiler](<https://devfeed.tech/tags/compiler.md>), [container](<https://devfeed.tech/tags/container.md>), [data-structure](<https://devfeed.tech/tags/data-structure.md>), [intel](<https://devfeed.tech/tags/intel.md>), [processor](<https://devfeed.tech/tags/processor.md>), [standard-library](<https://devfeed.tech/tags/standard-library.md>)

### AI overview

The article benchmarks a C++26 std::hive implementation against vector, list, and another container. In the reported tests, hive insertion costs about twice as much as vector insertion, while iteration is about eight times slower than vector and no faster than linked-list iteration.

### Source excerpt

C++26 adds a new container to the standard library: std::hive. It is meant to occupy the ground between std::vector and std::list. Like a vector, it keeps its elements in contiguous blocks of memory, so scanning it does not require you to chase a pointer for every element. Like a list, it never moves an element ... Continue reading How fast is C++26's std::hive?

## Implementing LFU Cache in O(1) Time: A Hands-on Breakdown

DevFeed: [Implementing LFU Cache in O(1) Time: A Hands-on Breakdown](<https://devfeed.tech/articles/implementing-lfu-cache-in-o-1-time-a-hands-on-breakdown-39586.md>)

Original publisher: [Read original article](<https://ankit-rana.com/logs/34-lfu-cache-o1-implementation/>)

Author: hello@ankit-rana.com

Published: 2026-08-02T00:00:00Z

Content type: tutorial

Language: en

Sources: [Ankit Rana | Mechanical Sympathy](<https://devfeed.tech/sources/ankit-rana-mechanical-sympathy.md>)

Topics: [Cache](<https://devfeed.tech/topics/cache.md>), [Caching](<https://devfeed.tech/topics/caching.md>), [Data structures](<https://devfeed.tech/topics/data-structures.md>), [implementation](<https://devfeed.tech/topics/implementation.md>)

Tags: [algorithms](<https://devfeed.tech/tags/algorithms.md>), [cache](<https://devfeed.tech/tags/cache.md>), [caching](<https://devfeed.tech/tags/caching.md>), [implementing](<https://devfeed.tech/tags/implementing.md>), [java](<https://devfeed.tech/tags/java.md>), [lfu](<https://devfeed.tech/tags/lfu.md>), [memory](<https://devfeed.tech/tags/memory.md>), [order](<https://devfeed.tech/tags/order.md>), [performance](<https://devfeed.tech/tags/performance.md>), [pointers](<https://devfeed.tech/tags/pointers.md>), [system-design](<https://devfeed.tech/tags/system-design.md>)

### AI overview

This tutorial explains why LRU can evict a frequently requested product during a long-tail burst, then presents an O(1) LFU cache design. It contrasts a naive O(n) eviction scan with an implementation using key-to-node and frequency-to-bucket maps, doubly linked lists, and a minFreq pointer.

### Source excerpt

LFU evicts the least frequently used key rather than the least recently used, which protects a hot key during a long-tail burst that would make LRU drop a bestseller. The naive implementation scans every key to find the minimum frequency, which is O(n) per eviction. The O(1) version inverts the index: a key-to-node map, a frequency-to-bucket map of doubly linked lists, and a minFreq pointer.

## Optimizing OPA performance: From arrays to objects

DevFeed: [Optimizing OPA performance: From arrays to objects](<https://devfeed.tech/articles/optimizing-opa-performance-from-arrays-to-objects-22577.md>)

Original publisher: [Read original article](<https://medium.com/capital-one-tech/optimizing-opa-performance-from-arrays-to-objects-a3c966acdaa5?source=rss----3db3a67cb648---4>)

Author: Capital One Tech

Published: 2026-07-07T14:25:30Z

Content type: tutorial

Language: en

Sources: [Capital One Tech](<https://devfeed.tech/sources/capital-one-tech.md>)

Topics: [opa](<https://devfeed.tech/topics/opa.md>), [Open Policy Agent](<https://devfeed.tech/topics/open-policy-agent.md>), [rego](<https://devfeed.tech/topics/rego.md>), [Data structures](<https://devfeed.tech/topics/data-structures.md>), [Optimization](<https://devfeed.tech/topics/optimization.md>), [Algorithms, Complexity](<https://devfeed.tech/topics/algorithms-complexity.md>)

Tags: [algorithms](<https://devfeed.tech/tags/algorithms.md>), [cloud-native](<https://devfeed.tech/tags/cloud-native.md>), [data-structures](<https://devfeed.tech/tags/data-structures.md>), [kubernetes](<https://devfeed.tech/tags/kubernetes.md>), [opa](<https://devfeed.tech/tags/opa.md>), [open-policy-agent](<https://devfeed.tech/tags/open-policy-agent.md>), [optimization](<https://devfeed.tech/tags/optimization.md>), [performance-tuning](<https://devfeed.tech/tags/performance-tuning.md>), [rego](<https://devfeed.tech/tags/rego.md>), [software-development](<https://devfeed.tech/tags/software-development.md>), [software-engineering](<https://devfeed.tech/tags/software-engineering.md>), [software-supply-chain](<https://devfeed.tech/tags/software-supply-chain.md>)

### AI overview

This article explains how to improve Open Policy Agent performance by choosing appropriate data structures for Rego policies. It focuses on replacing nested arrays with keyed objects to avoid inefficient array traversal when evaluating large datasets.

### Source excerpt

Achieve 99% faster Rego policy execution through optimization. Note: This post focuses on one aspect of performance tuning Rego policies and datasets evaluated by OPA-arrays vs. objects. The Rego Style Guide and Regal Rego linter are very helpful resources for learning Rego best practices and avoiding code smells in Rego policies. There is also the OPA performance tuning documentation. In 2018, I started using open policy agent (OPA) as a solution for controlling and preventing unwanted behaviors in our Kubernetes Clusters. OPA, along with Kubernetes Dynamic Admission Control, provided a means to build preventive controls. Since then, I have worked with several PaC solutions. I have always stayed close to the OPA tool set because of how well it supports multiple use cases. OPA is domain agnostic and can be used with virtually any use case, as long as you supply the correct data and policies. To that end, OPA use cases have expanded throughout several technical disciplines, such as cloud-native computing and software supply chain management. OPA performance engineering OPA enables us to unify PaC solutions across multiple use cases and systems, using the same languages and tools. However, there is always room for improvement and performance engineering policies and the execution thereof. In addition, optimizing data that policies evaluate and mutate should be part of our focus when we deliver OPA-based solutions. Recently I was asked to help with OPA performance issues. I made several recommendations, but I overlooked one simple and glaring issue: the poor performing policy was processing a large data set using nested-arrays, instead of the best practice of using keyed-objects. Later, something was bothering me about my interaction and I realized that while I gave decent architectural level advice, I completely missed the best engineering advice. Rego policies and data should be optimized just like other algorithms and relative data, and part of that optimization is

## Building accessibility into a canvas-based product

DevFeed: [Building accessibility into a canvas-based product](<https://devfeed.tech/articles/building-accessibility-into-a-canvas-based-product-9554.md>)

Original publisher: [Read original article](<https://www.figma.com/blog/building-accessibility-into-a-canvas-based-product/>)

Author: David Winslow; Elynn Lee

Published: 2026-07-01T17:56:00Z

Content type: article

Language: en

Sources: [Figma Blog](<https://devfeed.tech/sources/figma-blog.md>)

Topics: [Accessibility](<https://devfeed.tech/topics/accessibility.md>), [Canvas](<https://devfeed.tech/topics/canvas.md>), [Figma](<https://devfeed.tech/topics/figma.md>), [Document Object Model (DOM)](<https://devfeed.tech/topics/dom.md>), [aria](<https://devfeed.tech/topics/aria.md>), [HTML](<https://devfeed.tech/topics/html.md>), [React](<https://devfeed.tech/topics/react.md>), [Data structures](<https://devfeed.tech/topics/data-structures.md>)

Tags: [accessibility](<https://devfeed.tech/tags/accessibility.md>), [aria](<https://devfeed.tech/tags/aria.md>), [figma](<https://devfeed.tech/tags/figma.md>), [html](<https://devfeed.tech/tags/html.md>), [infinite](<https://devfeed.tech/tags/infinite.md>), [performance](<https://devfeed.tech/tags/performance.md>), [react](<https://devfeed.tech/tags/react.md>), [real-time](<https://devfeed.tech/tags/real-time.md>), [web](<https://devfeed.tech/tags/web.md>)

### AI overview

Figma explains how it added accessibility to its canvas-based product, whose browser-rendered accessibility tree is largely absent because the editor does not use traditional HTML and DOM for rendering. The solution combines an internal accessibility tree, a synchronized Mirror DOM React component, and selection synchronization so screen-reader and keyboard users can navigate and edit designs.

### Source excerpt

Building on a canvas unlocks performance that a traditional HTML web app can't touch. It also strips away any accessibility the browser gives you for free. Here's how we built it back in.

## How much do amd64 microarchitecture levels help in Go?

DevFeed: [How much do amd64 microarchitecture levels help in Go?](<https://devfeed.tech/articles/how-much-do-amd64-microarchitecture-levels-help-in-go-29410.md>)

Original publisher: [Read original article](<https://lemire.me/blog/2026/06/06/how-much-do-amd64-microarchitecture-levels-help-in-go/>)

Author: Daniel Lemire

Published: 2026-06-06T20:25:19Z

Content type: article

Language: en

Sources: [Daniel Lemire](<https://devfeed.tech/sources/daniel-lemire.md>)

Topics: [Go Language](<https://devfeed.tech/topics/go-language.md>), [Benchmark](<https://devfeed.tech/topics/benchmark.md>), [cpu](<https://devfeed.tech/topics/cpu.md>), [Data structures](<https://devfeed.tech/topics/data-structures.md>), [toolchain](<https://devfeed.tech/topics/toolchain.md>), [intel](<https://devfeed.tech/topics/intel.md>)

Tags: [avx](<https://devfeed.tech/tags/avx.md>), [benchmark](<https://devfeed.tech/tags/benchmark.md>), [cpu](<https://devfeed.tech/tags/cpu.md>), [data-structure](<https://devfeed.tech/tags/data-structure.md>), [go](<https://devfeed.tech/tags/go.md>), [intel](<https://devfeed.tech/tags/intel.md>), [performance](<https://devfeed.tech/tags/performance.md>), [toolchain](<https://devfeed.tech/tags/toolchain.md>)

### AI overview

This article examines how amd64 microarchitecture levels affect Go program performance. It explains the instruction-set levels and reports a benchmark methodology using the Roaring Bitmaps library on an Intel Xeon Gold 6548N with Go 1.26.2 and Roaring v2.18.2. The supplied text does not include the benchmark results.

### Source excerpt

Our 64-bit Intel and AMD processors have evolved over decades. When you compile a Go program for a 64-bit Intel or AMD processor, the compiler targets, by default, a nearly 20-year-old instruction set. The binary that comes out runs on essentially any x64 chip, but it also leaves on the table every instruction that was ... Continue reading How much do amd64 microarchitecture levels help in Go?

## Mapping Strings to Float Arrays in Go: How Fast Can We Go?

DevFeed: [Mapping Strings to Float Arrays in Go: How Fast Can We Go?](<https://devfeed.tech/articles/mapping-strings-to-float-arrays-in-go-how-fast-can-we-go-29404.md>)

Original publisher: [Read original article](<https://lemire.me/blog/2026/05/05/mapping-strings-to-float-arrays-in-go-how-fast-can-we-go/>)

Author: Daniel Lemire

Published: 2026-05-05T19:01:09Z

Content type: article

Language: en

Sources: [Daniel Lemire](<https://devfeed.tech/sources/daniel-lemire.md>)

Topics: [Go Language](<https://devfeed.tech/topics/go-language.md>), [Benchmark](<https://devfeed.tech/topics/benchmark.md>), [Data structures](<https://devfeed.tech/topics/data-structures.md>), [floating-point](<https://devfeed.tech/topics/floating-point.md>)

Tags: [go](<https://devfeed.tech/tags/go.md>), [harness](<https://devfeed.tech/tags/harness.md>), [memory](<https://devfeed.tech/tags/memory.md>), [performance](<https://devfeed.tech/tags/performance.md>), [vectors](<https://devfeed.tech/tags/vectors.md>)

### AI overview

This article examines mapping strings to small float arrays in Go using the constmap library. It explains an immutable map based on a binary fuse filter and compares index-based and pointer-based value storage with a standard Go map. In the reported benchmark, the indexed constmap was twice as fast as the Go map, while raw pointers reduced lookup time further, with important garbage-collector and serialization limitations.

### Source excerpt

A common pattern in modern software is to map a string key to a small array of floating-point numbers. Word embeddings, feature vectors, lookup tables for physical constants: all variations on the same theme. In Go, the obvious way to write this is a map[string][]float32. But how fast is it, really, and can we do ... Continue reading Mapping Strings to Float Arrays in Go: How Fast Can We Go?

## Safe Optimistic Lock Coupling

DevFeed: [Safe Optimistic Lock Coupling](<https://devfeed.tech/articles/safe-optimistic-lock-coupling-25091.md>)

Original publisher: [Read original article](<https://databasearchitects.blogspot.com/2026/04/safe-optimistic-lock-coupling.html>)

Author: Thomas Neumann (noreply@blogger.com)

Published: 2026-04-29T10:22:56Z

Content type: article

Language: en

Sources: [Database Architects](<https://devfeed.tech/sources/database-architects.md>)

Topics: [Concurrency](<https://devfeed.tech/topics/concurrency.md>), [Concurrent Programming](<https://devfeed.tech/topics/concurrent-programming.md>), [Data structures](<https://devfeed.tech/topics/data-structures.md>), [Scalability](<https://devfeed.tech/topics/scalability.md>), [race-condition](<https://devfeed.tech/topics/race-condition.md>)

Tags: [concurrent](<https://devfeed.tech/tags/concurrent.md>), [cpu](<https://devfeed.tech/tags/cpu.md>), [data-structures](<https://devfeed.tech/tags/data-structures.md>), [locking](<https://devfeed.tech/tags/locking.md>), [locks](<https://devfeed.tech/tags/locks.md>), [mutex](<https://devfeed.tech/tags/mutex.md>), [performance](<https://devfeed.tech/tags/performance.md>), [race-condition](<https://devfeed.tech/tags/race-condition.md>), [scalability](<https://devfeed.tech/tags/scalability.md>), [synchronization](<https://devfeed.tech/tags/synchronization.md>), [thread](<https://devfeed.tech/tags/thread.md>), [typesafety](<https://devfeed.tech/tags/typesafety.md>)

### AI overview

The article explains how lock coupling can limit the scalability of concurrent binary-tree lookups because readers contend on locks, especially at the root. It presents Optimistic Lock Coupling, in which readers validate version numbers without writes, and discusses the race-condition risk when values are used before validation.

### Source excerpt

As the number of CPU cores keeps growing, the scalability of concurrent data structures becomes increasingly important. A data structure that works fine on 4 cores can become a bottleneck on 32, not because of algorithmic limitations, but because of how it synchronizes access. We illustrate that with a simple binary tree. Usually these data structures are protected by some kind of lock: struct Node { mutex lock; key_type key; value_type value; Node* left, *right; }; struct Tree { mutex lock; Node* root; }; When searching a value, we can traverse the data structure, lock the parts of the data we are currently touching, and release locks when we are done ("lock coupling"): option<value_type> Tree::lookup(key_type key) { lock.lock_shared(); mutex* currentLock = &lock; Node* iter = root; option<value_type> result; while (iter) { if (key == iter->key) { result = iter->value; break; } Node* next = (key < iter->key) ? iter->left : iter->right; if (next) next->lock.lock_shared(); currentLock->unlock(); currentLock = next ? &next->lock : nullptr; iter = next; } currentLock->unlock(); return result; } While conceptually simple, lock coupling has quite poor performance in practice. The problem is that it creates contention on the locks, in particular for the root node. Every lookup goes through the root node, thus the root node is constantly locked and unlocked. While there is no semantic contention between lookups, as all readers can read the root concurrently, there is physical contention on the lock itself, which limits scalability. This can be seen below, with concurrent lookups in a tree of 100,000 elements, executed on a 16-core / 32-thread 9950X3D. Lookup scalability: no locking vs lock coupling This contention problem can be solved by using Optimistic Lock Coupling, a synchronization technique where readers do not perform any writes. The key idea here is that writers lock as usual, and increase a version number when they are done updating. Readers read the version numb

## A SIMD quaternary search algorithm for sorted arrays of 16-bit integers

DevFeed: [A SIMD quaternary search algorithm for sorted arrays of 16-bit integers](<https://devfeed.tech/articles/you-can-beat-the-binary-search-29402.md>)

Original publisher: [Read original article](<https://lemire.me/blog/2026/04/27/you-can-beat-the-binary-search/>)

Author: Daniel Lemire

Published: 2026-04-27T17:32:13Z

Content type: tutorial

Language: en

Sources: [Daniel Lemire](<https://devfeed.tech/sources/daniel-lemire.md>)

Topics: [Algorithms](<https://devfeed.tech/topics/algorithms.md>), [C++](<https://devfeed.tech/topics/c-plus-plus.md>), [Data structures](<https://devfeed.tech/topics/data-structures.md>)

Tags: [algorithm](<https://devfeed.tech/tags/algorithm.md>), [array](<https://devfeed.tech/tags/array.md>), [c-plus-plus](<https://devfeed.tech/tags/c-plus-plus.md>)

### AI overview

The article explains linear and binary search for sorted arrays, then introduces the SIMD Quad algorithm. The algorithm combines quaternary interpolation search with SIMD instructions to search sorted arrays of 16-bit unsigned integers in fixed-size blocks.

### Source excerpt

We sometimes have to look for a value in a sorted array. The simplest algorithm consists in just going through the values one by one, until we encounter the value, or exhaust the array. We sometimes call this algorithm a linear search. In C++, you can get the desired effect with the std::find function. For ... Continue reading You can beat the binary search

## The importance of benchmarks

DevFeed: [The importance of benchmarks](<https://devfeed.tech/articles/the-importance-of-benchmarks-33535.md>)

Original publisher: [Read original article](<https://www.aha.io/engineering/articles/the-importance-of-benchmarks>)

Published: 2026-04-13T00:00:00Z

Content type: article

Language: en

Sources: [Aha! Engineering Blog](<https://devfeed.tech/sources/aha-engineering-blog.md>)

Topics: [Algorithm](<https://devfeed.tech/topics/algorithm.md>), [Data structures](<https://devfeed.tech/topics/data-structures.md>), [Parsing](<https://devfeed.tech/topics/parsing.md>), [data](<https://devfeed.tech/topics/data.md>)

Tags: [algorithm](<https://devfeed.tech/tags/algorithm.md>), [benchmarks](<https://devfeed.tech/tags/benchmarks.md>), [data-structure](<https://devfeed.tech/tags/data-structure.md>), [parsing](<https://devfeed.tech/tags/parsing.md>), [performance](<https://devfeed.tech/tags/performance.md>), [structure](<https://devfeed.tech/tags/structure.md>)

### AI overview

The Aha! Develop team investigated a sprint report that took 15 minutes to load and nearly froze the browser. The investigation traced the problem to inefficient progress parsing and data structures that duplicated days without events, producing a more than 100-fold performance increase after changes.

### Source excerpt

Late last year, the Aha! Develop team added support for team line-level reporting. During a team demo in the run-up to the release, we discovered one of our internal sprint reports was taking 15 minutes to load, almost freezing the browser in the p

## The Data Structures Behind Text Editors: Gap Buffers, Piece Tables, Ropes, and CRDTs

DevFeed: [The Data Structures Behind Text Editors: Gap Buffers, Piece Tables, Ropes, and CRDTs](<https://devfeed.tech/articles/the-data-structures-behind-text-editors-gap-buffers-piece-tables-ropes-and-crdts-39655.md>)

Original publisher: [Read original article](<https://www.gauravsarma.com/posts/2026-04-05_text-editor-data-structures>)

Published: 2026-04-05T00:00:00Z

Content type: tutorial

Language: en

Sources: [Gaurav Sarma's Blog](<https://devfeed.tech/sources/gaurav-sarma-s-blog.md>)

Topics: [Data structures](<https://devfeed.tech/topics/data-structures.md>), [distributed-systems](<https://devfeed.tech/topics/distributed-systems.md>)

Tags: [data-structures](<https://devfeed.tech/tags/data-structures.md>), [delete](<https://devfeed.tech/tags/delete.md>), [distributed-systems](<https://devfeed.tech/tags/distributed-systems.md>), [editor](<https://devfeed.tech/tags/editor.md>), [file](<https://devfeed.tech/tags/file.md>), [insert](<https://devfeed.tech/tags/insert.md>), [memory](<https://devfeed.tech/tags/memory.md>), [search](<https://devfeed.tech/tags/search.md>), [syntax-highlighting](<https://devfeed.tech/tags/syntax-highlighting.md>)

### AI overview

This tutorial explains how text editors represent document buffers in memory. It compares gap buffers, piece tables, ropes, and CRDTs, focusing on the trade-offs among insertion, deletion, reading, cursor movement, memory efficiency, latency, and multi-user concurrency.

### Source excerpt

Open a text editor, type a character, and it appears on screen. That single keystroke triggers a surprisingly deep question: how does the editor represent your document in memory so that insertions, deletions, and cursor movements all feel instant, even on a file with millions of lines...

## A Fast Immutable Map in Go

DevFeed: [A Fast Immutable Map in Go](<https://devfeed.tech/articles/a-fast-immutable-map-in-go-29398.md>)

Original publisher: [Read original article](<https://lemire.me/blog/2026/03/29/a-fast-immutable-map-in-go/>)

Author: Daniel Lemire

Published: 2026-03-29T18:18:01Z

Content type: article

Language: en

Sources: [Daniel Lemire](<https://devfeed.tech/sources/daniel-lemire.md>)

Topics: [Go Language](<https://devfeed.tech/topics/go-language.md>), [Data structures](<https://devfeed.tech/topics/data-structures.md>)

Tags: [benchmarks](<https://devfeed.tech/tags/benchmarks.md>), [go](<https://devfeed.tech/tags/go.md>), [map](<https://devfeed.tech/tags/map.md>), [memory](<https://devfeed.tech/tags/memory.md>)

### AI overview

The article presents constmap, a Go library for immutable string-to-value maps built with binary fuse filters. For fixed key sets, it aims to reduce memory use and provide fast lookups; benchmarks on one million keys reported nearly three times faster lookups and sixfold lower memory use than Go's standard map on the author's test system.

### Source excerpt

Consider the following problem. You have a large set of strings, maybe millions. You need to map these strings to 8-byte integers (uint64). These integers are given to you. If you are working in Go, the standard solution is to create a map. The construction is trivial, something like the following loop. m := make(map[string]uint64, ... Continue reading A Fast Immutable Map in Go

[Next page](<https://devfeed.tech/topics/data-structures.md?cursor=WyIyMDI2LTAzLTI5VDE4OjE4OjAxKzAwOjAwIiwgIjkyMjA5YjUwLTZiNmYtNDliNi1hNGU4LTZlNWU3NmExNzVjNyJd>)