Elgondolkodtató, de azért hadd hozzam fel példának az Mplayert, ami runtime képes kiválasztani az adott cpu-hoz melyik codepath a legjobb és támogat MMX-et, 3dnow-t, SSE-t SSE2-t, ha jól rémlik a cikkben rémesnek titulált altivec-et is. Pedig ezt is emberek írták...
Az érzésem az, hogy az mplayernél azért tudták megcsinálni, mert a fejlesztés úgy ment, hogy először C-ben írták meg a függvényeket és utána valaki (most nem nézem meg, hogy pontosan ki is volt az) nekiállt a sokat futó és látszólag jól párhuzamosítható függvényekből 1-1 alternatív asm optimalizált változatot csinálni, amit eleinte fordítási időben lehetett választani az eredeti C-s függvény helyett, később megcsinálták, hogy futási időben is lehessen. Az ASM optimalizálást alapvetően így kell csinálni, ennek ez a helyes, használható módszere.
A flash fejlesztők viszont szerintem nem így dolgoznak. Akárki akármit mond, a cégnek nem volt prioritás a Linux support, ezért 1-2 embert állítottak csak rá, odaborították nekik a windows-os flash player orrba-szájba hackelt, itt-ott ötletszerüen x86 asm optimalizált kódbázisát (természetesen 0 dokumentációval, ahogy ez tipikusan szokott lenni), hogy "nesze ezt portoljátok linuxra". Nyilván eleve nem platformfüggetlenre tervezték, nincs normális build rendszer, ami lehetővé tenne akárcsak fordítási időben platform-specifikus kódválasztást. Az ASM betétek nem úgy vannak, hogy egy egyébként C-ben megírt függvény funkcióban azonos alternatívái, amihez vissza lehet térni, ha valamiért az assembly mégsem járható út, hanem a függvény egyetlen változata az ami ASM-ben van lekódolva. Hát ez így tényleg elég frusztráló tud lenni, ha egy átláthatatlan, összegányolt kódból kell valami használhatót kihozni. Ennél már az is jobb, ha from scratch újraírják, csakhát ahhoz rendes specifikációk, komoly dokumentáció kell, ami könnyen lehet, hogy nincs.
A csávóka meg itt arról beszél, hogy mekkora teljesítményveszteséggel jár, ha nem használnak ASM-et, de basszus, teljesítményvesztés ide vagy oda, először egy funkcionálisan működő változatot kell csinálni és csak utána lehet egyáltalán szó arról, hogy teljesítményre optimalizálnak. Máshogy nem megy, esélytelen. Na én először ezt a változatot szeretném látni, már ez is komoly előrelépés lenne.
---
Az ember mindig szerepet játszik. Ha másnak nem, hát saját magának.