DHH, tvorac Ruby on Railsa, poslednjih dana je čest izvor kontroverzi, između ostalog i sa govorom o kraju programerske karijere, o kom smo pisali u petak.

Sada je objavio da je motor za screensaver u svom Linux sistemu Omarchy prepisao sa Rusta na x86-64 asembler. Program je, kako kaže, do 17 puta brži, a prevod je jednim potezom uradio Claude Opus 5.5.

Prvo je, u petak popodne, pokazao isečak asemblerskog koda:

Uveče je stigla i najava porta:

Šta piše u izmeni koda

Sama izmena na GitHubu daje umereniju sliku.

Asemblerska verzija pokriva svih 37 efekata i daje izlaz identičan Rust verziji, što je provereno na 91.641 test slučaju bez ijedne greške.

Prosečno ubrzanje je 4.1 puta, a 17 puta se postiže samo na najbržem efektu.

Novi kod radi samo na procesorima sa AVX-512 instrukcijama, dok ostali i dalje koriste Rust, a izmena još nije spojena u glavni kod.

Odakle dolazi ubrzanje

Jedan programer je iz iste izmene izvukao zaključak da dobitak ne dolazi od prelaska na asembler, nego od boljeg dizajna.

Podaci su složeni tako da se brže čitaju, iscrtava se samo ono što se promenilo, a izlaz se šalje sa manje sistemskih poziva, što je sve moguće i u Rustu.

To piše i u samom opisu izmene: najveći deo dobitka dolazi od rasporeda podataka i algoritama, a ne od novih instrukcija procesora.

Isti programer je dodao da je ovo dobra lekcija da se čita opis izmene koji napiše agent. Drugi su podsetili na staro pravilo iz optimizacije: ko nešto ubrza dva puta, možda je uradio nešto pametno, a ko ubrza sto puta, verovatno je samo prestao da radi nešto glupo.

Razumevanje sistema

Da brojka sama po sebi ne govori mnogo, u maju je pokazao i suosnivač HashiCorpa i autor terminala Ghostty Mičel Hašimoto.

Pustio je agenta da četiri sata optimizuje namerno spor renderer, koji je sa 88 spustio na 1.5 milisekunde po slici, a njegova ručno pisana verzija radi za 0.02 milisekunde.

Poenta mu je, kako piše, da onaj ko ne razume sistem prihvata ovakav rezultat kao neverovatan, a onaj ko ga razume odmah vidi bolje rešenje.

Iako je baš ovaj primer verovatno neoptimalan, to što postoji mogućnost da se sve ovo ubrzanje dobije spuštanjem direktno na metal, asemblerom, za sve nas je vrlo nova i važna informacija.