Tavaly Ben Dunbobbin egy olyan fejlesztést készített, amely gyorsítja a DTLTO-val végzett linkelést, amikor fájlokat kell hozzáadni a linkhez. Szélsőséges esetben, Windows alatt egy AMD Ryzen 16 magos processzoron egy fájl hozzáadása a linkhez nagyjából 2799 ms-ig tartott, az azóta beolvasztott kóddal viszont ez 157 ms-ra csökkent. Linux alatt a patch körülbelül 255 ms-ról nagyjából 41 ms-ra viszi le az időt.
Ben a patch teljesítményjavulásáról így írt:
"A folyamaton belüli ThinLTO backend jellemzően memóriában állítja elő az object fájlokat, és közvetlenül hozzáadja őket a linkeléshez, kivéve, ha használják a ThinLTO cache-t. A DTLTO ebből a szempontból szokatlan, mert minden esetben lemezről ad hozzá fájlokat a linkeléshez.
Ha nem használják a ThinLTO cache-t, a ThinLTO a linker által biztosított AddStreamFn callbacken keresztül adja hozzá a fájlokat, ami végül egy SmallVector végére fűz az LLD-ben. Ha használják a cache-t, a linker egy AddBufferFn callbacket ad, amely hatékonyabban adja hozzá a fájlokat (a MemoryBuffer tulajdonjogának átvételével).
Ez a patch lehetővé teszi, hogy a kliensek opcionálisan AddBufferFn callbacket adjanak a DTLTO ThinLTO backendnek. Ha ez elérhető, a backend ezt használja, hogy hatékonyabban adja hozzá a fájlokat a linkeléshez.
Egy Clang link (debug build sanitizers és instrumentáció mellett) optimalizált toolchainnel (PGO non-LTO, llvmorg-22.1.0) mérve az Add DTLTO files to the link időtrace scope átlagos időtartamát:
- Windows alatt (Windows 11 Pro Build 26200, AMD Family 25 @ ~4.5 GHz, 16 mag/32 szál, 64 GB RAM) ez a patch 2799.148 ms-ról 157.972 ms-ra csökkenti az átlagot.
- Linux alatt (Ubuntu 24.04.3 LTS kernel 6.14, Ryzen 9 5950X, 16 mag/32 szál, boost akár 5.09 GHz, 64 GB RAM) ez a patch 255.291 ms-ról 41.630 ms-ra csökkenti az átlagot."
Az LLVM/Clang 23-ban ehhez a változáshoz elég volt néhány tucat sornyi kódot átdolgozni, mégis arányaiban nagyon nagy gyorsulást hozott.

