The Curiouser and Curiouser Case of Case-Insensitive Tweaks

Recent commits to the DWScript repository doubled the compiler performance when compiling many small scripts, like happens in the unit tests suites.

This started from a first profiling run where the memory allocations around the UnicodeLowerCase function came out as top bottlenecks.

Thing is, Pascal being a case-insensitive language, there are lots of case-insensitive comparisons, lookups, searches and hashes, and turns out a key hash code was computed with code like

(more…)

DWScript update for Delphi 12

DWScript has been updated for Delphi 12 support, there are only minor changes required and they are in the DWScript repository.

On a side note, the Delphi 12 IDE definitely feels more snappy when navigating code or invoking code insight (ctrl+space) on large projects (more than 2 MLOC), which is nice!

SamplingProfiler 23.8.21

SamplingProfiler 23.8.21 is now available. This version is all about cosmetic fixes:

  • Display Delphi internal version number for unknown Delphi versions instead of defaulting to ‘XE2’
  • Replaced old directory browser in search paths dialog
  • Minor HDPI fixes

Also the zip only includes the 64bit version now (which should work with 32bit executables).

FocusFusion 1.4.0 – fixes and speedups

FocusFusion 1.4.0 update is now available in the Windows Store. This version fixes two issues introduced with 1.3.7: the wavelet focus stacking being cropped too tight and small rendering artefacts.

There were also small performance improvements around memory management and caching for up to 10% faster fusion. This version also introduces the use of fused multiply-add CPU instructions (FMA) whenever available, but a the moment with zero improvements unless you have very, very fast main memory.