The Curious Engineer

All blogs / Performance / optimization

Neil Henning

neilhenning.dev

This is where Neil Henning writes up things of interest.

Performance / optimizationCompilersC++AI / ML

’05’10’15’20’25
Posts
100 from 1 Jan 2001 to 5 Jun 2026
Posting
now and then (3 in the last year)
Kind
personal blog
Feed
https://www.neilhenning.dev/index.xml

2026 2

  1. I'm Allowing AI Use in my Libraries
  2. Five Stages of Grief With the Rise of AI

2025 1

  1. I [[musttail]] You About a Tokenizer

2024 4

  1. Custom asserts in LLVM
  2. Your Own Constant Folder in C/C++
  3. Verse Transactional Memory
  4. Updating GitHub repos to Apple Silicon

2023 9

  1. How long does it take to compile LLVM 17 on a Raspberry PI 5
  2. How long does it take to compile LLVM 17 on a Raspberry PI 4
  3. My Take On Return To Office and Remote Work
  4. How costly is changing the hardware rounding mode?
  5. New Web Domain & Mastodon Handle
  6. Using Fibonacci Hashing in hashmap.h
  7. Making Hashing Faster in hashmap.h
  8. New Year Cleanup
  9. I'm Pretty Much Done With Twitter

2022 9

  1. I've Joined Epic to Work on Verse
  2. Floating Point Compression Revisited
  3. I'm Leaving Unity
  4. Floating Point Compression - How Small Can We Get?
  5. LLVM 15 Compile Time With Burst
  6. Adding UTEST_SKIP to utest.h
  7. Making the LLVM Legacy Pass Manager 1.65x Faster
  8. Switching subprocess.h to posix_spawn
  9. Updated Website Theming

2021 5

  1. A Review of the Zig Programming Language (using Advent of Code 2021)
  2. Porting Burst to the New LLVM Pass Manager
  3. Introducing envcache
  4. Early 2021 Mega Update
  5. How I Structure My Working Day

2020 18

  1. Advent of Code 2020 - Review
  2. Advent of Code 2020
  3. Exploring Hourglass APIs in Rust
  4. Introducing hashmap.h
  5. Asynchronous Reading in subprocess.h
  6. Adding fixtures to ubench.h
  7. I'm now 99% Confident in ubench.h
  8. White Guilt and Juneteenth
  9. Introducing ubench.h
  10. Simple C Command Line Parser
  11. utest.h Now Supports Whole Program Optimization
  12. How to Test Rust Command Line Applications
  13. Fixed Up RSS
  14. Lessons of a Remote Worker
  15. Extracting the json.h README.md Code Samples For Compiling
  16. C89 & Single Header json.h
  17. Some Miscellaneous Library Improvements
  18. utest.h

2019 8

  1. FPSCEV - Improving the Range Analysis
  2. Farewell AMD / Hello Unity
  3. Using Floating-Point Scalar Evolution to Simplify Instructions
  4. Using Floating-Point Scalar Evolution to Propagate Fast-Math Flags
  5. An Experimental Floating-Point Scalar Evolution
  6. Comparing utest.h against googletest and jctest
  7. Switching my blog to Hugo
  8. Introducing bump_alloc - my new Rust crate

2018 7

  1. 2018 Review
  2. Baby's First Crate: cpp_new
  3. So long Codeplay, thanks for all the fish!
  4. 1.22x Performance Improvements in json.h!
  5. Optimizing LLVM IR from the C API
  6. How to read & write LLVM bitcode
  7. Adding Latin and Greek support to utf8.h!

2017 9

  1. Introducing process.h!
  2. Cross compiling Sollya to Windows with Emscripten
  3. LLVM & CRT - auto-magically selecting the correct CRT
  4. Slides from my Khronos Munich Chapter talk
  5. I'm speaking at the Munich Khronos Chapter Meeting 13th October 2017
  6. OpenCL -> Vulkan: A Porting Guide (#3)
  7. OpenCL -> Vulkan: A Porting Guide (#2)
  8. OpenCL -> Vulkan: A Porting Guide (#1)
  9. Adding JSON 5 to json.h

2016 12

  1. Adding loops (MPC -> LLVM for the Neil Language #5)
  2. Adding branching (MPC -> LLVM for the Neil Language #4)
  3. Introducing YARI-V - an experiment on SPIR-V compression
  4. spirv-stats update - exposing more information
  5. spirv-stats - a tool to output statistics of your SPIR-V shader modules
  6. Adding type identifiers (MPC -> LLVM for the Neil Language #3)
  7. json.h update - fixing bugs found by nativejson-benchmark
  8. Cleaning up the parser (MPC -> LLVM for the Neil Language #2)
  9. Hooking up MPC & LLVM
  10. A simple Vulkan Compute example
  11. Allocators in json.h!
  12. git pre-commit clang-format hook

2015 15

  1. Full Simplified JSON support in json.h
  2. Introducing utest.h!
  3. (Partial) Simplified JSON support in json.h
  4. json.h performance (update!)
  5. json.h performance (vs other C/C++ JSON parsers)
  6. Json h
  7. utf8.h progress!
  8. Utf8 h
  9. Length vs size for array dimensions
  10. On the use and abuse of size_t
  11. Connecting a build node to Jenkins on Raspberry Pi 2
  12. Running your first job on the Raspberry Pi 2 / Jenkins
  13. Installing Jenkins on Raspberry Pi 2
  14. Khronos/EuroLLVM talk - Why SPIR-V?
  15. Raspberry Pi 2 Dot Product Test

2001 1

  1. life log