The Curious Engineer

All blogs / Performance / optimization

Daniel Lemire's blog

lemire.me/blog

Daniel Lemire is a software performance expert. He ranks among the top 2% of scientists globally (Stanford/Elsevier 2025) and is one of GitHub's top 1000 most followed developers.

Performance / optimizationCPU / microarchitectureAlgorithms / data structuresScience

Posts
2,418 from 17 May 2004 to 17 Oct 2026
Posting
weekly (93 in the last year)
Kind
personal blog
Feed
https://lemire.me/blog/feed/

Latest

October 2026

  1. Decoding base64 in Python at 10 gigabytes per second
  2. Redis now has compressed bitmaps (Roaring)
  3. Parsing JSON at tens of gigabytes per second… in Python
  4. WebSocket servers in JavaScript: Node.js, Bun and Deno in 2026
  5. Faster Python startup with lazy imports
  6. Mastering SIMD with Java Vector API
  7. Faster software linking with mold
  8. Ephemeral testing
  9. Research paper overload: submissions capped at two a month
  10. Google’s first orbital data center is in orbit
  11. Parsing compressed JSON at 40 GB/s

September 2026

  1. Transcoding UTF-8 to UTF-16 with replacement at gigabytes per second
  2. How do you deal with people who strongly disagree with your views?
  3. simdjson 5.0 is out
  4. How fast can you fix a UTF-16 string in C#?
  5. A thesis isn’t enough for a PhD
  6. How many strings can you create per second?
  7. If you don’t have the factories, you lose the expertise
  8. A summer of AI optimization
  9. More than a taken branch per cycle?
  10. The data does not show mass unemployment
  11. AI is breaking the academic sorting machine
  12. How did Apple Silicon get 50% faster in three years?
  13. Faster JSON parsing with SVE2 on ARM processors
  14. How did AMD Ryzen get 50% faster in two years?
  15. How fast is C++23’s std::flat_map?
  16. Subnormal floating-point numbers are expensive… on Intel processors
  17. The four-colour theorem was only the start
  18. Fear Is Not an Argument
  19. A quick overview of atomics in C
  20. AI programming: a layered model
  21. Python sets and dictionaries can have quadratic-time performance

August 2026

  1. The new Go JSON API: twice as fast, or 1.5x slower?
  2. Java’s String.indexOf can be slow (quadratic)
  3. Parsing IP addresses in C# at crazy speeds
  4. Go 1.27 will make some allocations cheaper
  5. AI programming : are you angry yet?
  6. Profile-guided optimization in Go
  7. How fast is C++26’s std::hive?

July 2026

  1. Memory-level parallelism: AMD is the king
  2. Does a PhD Pay Off?
  3. From Institutions to Individuals: the White House Report on Revitalizing U.S. Scientific Leadership
  4. Using AI to build your own software
  5. X just gave us an interface that AI agents can use. I pointed it at my own posts.

June 2026

  1. Chatting with an AI Won’t Make You a Top Programmer
  2. Parsing JSON at compile time with C++26 static reflection
  3. Sovereign
  4. How much do amd64 microarchitecture levels help in Go?

May 2026

  1. Embodied cognition and agentic AI
  2. Parsing IPv6 Addresses Crazily Fast with AVX-512
  3. Only 17% of all 64-bit Integers are products of two 32-bit integers
  4. SIMD-accelerated integer-to-string conversion
  5. Checking multiplication overflow
  6. Mapping Strings to Float Arrays in Go: How Fast Can We Go?

April 2026

  1. House prices and fertility
  2. You can beat the binary search
  3. The fastest way to match characters on ARM processors?
  4. A brief history of C/C++ programming languages
  5. Can your AI rewrite your code in assembly?

March 2026

  1. A Fast Immutable Map in Go
  2. JSON and C++26 compile-time reflection: a talk
  3. How many branches can your CPU predict?
  4. Prefix sums at tens of gigabytes per second with ARM NEON
  5. Text formats are everywhere. Why?

February 2026

  1. You can use newline characters in URLs
  2. How fast do browsers correct UTF-16 strings?
  3. How bad can Python stop-the-world pauses get?
  4. AI: Igniting the Spark to End Stagnation
  5. The cost of a function call
  6. Converting data to hexadecimal outputs quickly
  7. Converting floats to strings quickly

January 2026

  1. Optimizing Python scripts with AI
  2. A new way to call C from Java: how fast is it?
  3. How stagnant is CPU technology?
  4. What I Got Wrong About “Hard Work” in My 20s
  5. A bit of glass and freedom is all you need
  6. Technology is culture

December 2025

  1. The culture war that we won
  2. By how much does your memory allocator overallocate?
  3. Freedom from incompetence
  4. Don’t be so eager to rewrite your code
  5. Parsing IP addresses quickly (portably, without SIMD magic)
  6. Performance trick : optimistic vs pessimistic checks
  7. JSON-complete data formats and programming languages
  8. Multiplying the Shuffle Speed in Go with Batched Shuffling
  9. Why speed matters
  10. We see something that works, and then we understand it
  11. Why don’t we get more scientific breakthroughs?

November 2025

  1. How fast can browsers process base64 data?
  2. Antifragile Programming and Why AI Won’t Steal Your Job
  3. How good are Chinese CPUs? Benchmarking the Loongson 3A6000
  4. AMD vs. Intel: a Unicode benchmark
  5. Automated Equality Checks in C++ with Reflection (C++26)

October 2025

  1. As smart as a PhD
  2. Flame Graphs in Go
  3. Thinking Clearly
  4. Speeding up C++ functions with a thread_local cache
  5. Research results are cultural artifacts, not public goods
  6. Speed of random number generators in Go
  7. Aesthetics matter
  8. std::ranges may not deliver the performance that you expect
  9. Beyond papers: rethinking science in the era of artificial intelligence

September 2025

  1. The smallest number that is infinite
  2. Hard work is a virtue
  3. Splitting a long string in lines efficiently
  4. Processors are getting wider

August 2025

  1. Debugging C++ with Visual Studio Code under macOS
  2. Predictable memory accesses are much faster
  3. Why do we even need SIMD instructions ?

July 2025

  1. Innovation starts with consumers, not academia
  2. Rebels on campus
  3. Dot product on misaligned data
  4. Why measuring productivity is hard
  5. Memory-level parallelism : Apple M2 vs Apple M4
  6. Just say no to broken JSON
  7. Base64 for compression

June 2025

  1. From code reuse to the impact of generative AI
  2. Discover C++26’s compile-time reflection
  3. Life expectancy of men in Canadian provinces
  4. Don’t argue: build
  5. Metcalfe’s Law against Brooks’ Law
  6. Let us bury the linear model of innovation
  7. Fast character classification with z3

May 2025

  1. Is the job market for software developers collapsing?
  2. Models and science
  3. Dividing an array into fair sized chunks
  4. Returning several values from a function in C++ (C++23 edition)
  5. Producing useful commands on the go using C++ and AI
  6. C++20 concepts for nicer compiler errors

April 2025

  1. Streamlined iteration: exploring keys and values in C++20
  2. Detect control characters, quotes and backslashes efficiently using ‘SWAR’
  3. How can really smart people appear totally incompetent?
  4. How helpful is AI?
  5. Faster shuffling in Go with batching

March 2025

  1. Mixing ARM NEON with SVE code for fun and profit
  2. Unsigned comparisons using signed types
  3. Speeding up C++ code with template lambdas
  4. An overview of parallel programming (Go edition)
  5. How fast can you open 1000 files?

February 2025

  1. AVX-512 gotcha: avoid compressing words to memory with AMD Zen 4 processors
  2. Thread-safe memory copy

January 2025

  1. Programmer time and the pitfalls of wasteful work
  2. Regular expressions can blow up!
  3. Checking whether an ARM NEON register is zero
  4. The ivory tower’s drift: how academia’s preference for theory over empiricism fuels scientific stagnation
  5. JavaScript hashing speed comparison: MD5 versus SHA-256
  6. Counting the digits of 64-bit integers
  7. Artificial Intelligence as the Expert’s Lever: Elevating Human Expertise in the Age of AI
  8. How does your URL parser handle Unicode?

December 2024

  1. Efficient In-Place UTF-16 Unicode Correction with ARM NEON

Every year

2026 772025 722024 642023 822022 582021 662020 852019 1122018 1222017 1322016 812015 592014 552013 642012 532011 642010 672009 1032008 1952007 2142006 2142005 2622004 117