About:

This is where Neil Henning writes up things of interest.

Website:

Specializations:

Outgoing Links:

Chris Ferdinandi
Subscribe to RSS:
The text discusses the use of the clang::musttail compiler attribute and jump tables to create a tokenizer for a toy language. It explains how tail calls and jump tables can be used to create a tokenizer without branches, and prov...
The author tried to convince the LLVM folks to allow for runtime togglable asserts, but they didn't want to have yet another codepath to maintain. The author hacked the LLVM CMake to add a header upfront in every source file and p...
The text discusses the use of sqrtps in C/C++ code and the issues with clang's optimization flow. It suggests using inline assembly to guarantee the desired instruction selection and advocates for writing your own constant folding...
The author talks about his experience with Transactional Memory, which he hadn't thought about for 15 years, and how he and his team at Epic Games have been working on bringing an STM to C++ for the Verse language.
The author compares the compile speed of LLVM 17 on Raspberry PI 5 and Raspberry PI 4, finding that the Raspberry PI 5 is 2.82x faster. He used the same LLVM version and the same MicroSD card for the comparison.
The author tests how long it takes to compile the latest LLVM release on a Raspberry Pi 4, comparing the stock Clang 11 compiler with the Clang 17 compiler. The results show that Clang 17 is faster than Clang 11, but with a larger...
The author discusses the return to office and remote work, acknowledging the benefits and drawbacks of both. He argues that remote work is here to stay and that in-person teams are more effective, but also acknowledges the challen...
The text discusses the cost of changing the hardware rounding mode for floating-point operations, with tests showing that it is significantly slower on both Arm and x86 processors. The author also explores the potential performanc...
The author discusses the process of migrating his Mastodon account to a new handle and his website to a new domain. He explains his motivation for the change and the challenges he faced during the migration process.
The author discusses the use of Fibonacci Hashing in hashmap.h, explaining the benefits and improvements it offers over other hashing methods. The new method provides a better avalanche effect and a good spread of outputs for cons...
Neil Henning discusses the process of making the hashmap.h library faster by optimizing the CRC calculations and using SSE4.2 and Arm extensions. He also improves the hashing calculations by using an and-mask instead of integer mo...

0New Year Cleanup

2023-01-22

Neil Henning discusses the cleanup he does on his C/C++ single header libraries at the start of the new year. He talks about the updates and features he adds to his six main libraries, including utest.h, ubench.h, utf8.h, json.h, ...
The author expresses dissatisfaction with Twitter, citing issues with ads, UI, and fragmentation of the community. They mention the impact of third-party clients being banned and the migration to Mastodon as a quieter and more ple...
The author revisits floating-point compression and presents the results of three different approaches: zfp, fpzip, and per-bit compression. Zfp and fpzip have no streaming API and require batching the input data. Zfp achieves a 1....

0I'm Leaving Unity

2022-10-21

Neil Henning is leaving Unity after three years of work, proud of his work on Burst and HPC#, and the people he worked with. He achieved significant performance gains, reduced compile time, and improved startup time. He is moving ...
The author discusses the compressibility of floating-point tables and the challenges of checking the correctness of math functions. He shares his findings on using ZSTD, xoring, delta encoding, and varint encoding to compress the ...
The author discusses the performance improvements and regressions in LLVM versions 10 to 15, particularly in relation to the Burst compiler used at Unity. They also mention the use of clang-cl.exe for improved performance.
The author discusses a new feature added to the utest.h single header C/C++ unit testing library, which allows users to skip a test case. This feature was added in response to a user request and is useful when refactoring code or ...
The text discusses a trick used to make the LLVM legacy pass manager significantly faster, by reducing the number of passes. The author explains the process of reducing the passes and the impact it had on the compilation speed. Th...