Het is niet zozeer dat ze het niet nodig vinden, het is meer dat het ondoenlijk is geworden.
...
Je kunt er gewoon niet meer tegenop programmeren. Enerzijds gaat de ontwikkeling van hardware veel sneller, en anderzijds is moderne software veel omvangrijker en complexer, en kost veel meer tijd om te ontwikkelen.
...
Het is jammer, maar het is niet anders.
Ik ben daar niet van overtuigd. Op
Planet GNOME lees ik wel eens weblogposts die gaan over
profiling en hoe GNOME meer efficiënt met hardware resources kan omgaan, en hoe een betere performance/snellere software gerealiseerd kan worden. Die snelheidswinsten zijn ook wel degelijk gerealiseerd in recente GNOME releases, zie bijvoorbeeld de
release notes van GNOME 2.14. Een van de GNOME hackers die zich veel met profiling bezig houdt is Federico Mena Quintero, en hij schreef het volgende in een
interview:
So, most optimizations do not revolve around bugs or tough compiler/linker hacks?
There's an interesting pattern that appears when you have never tuned performance in a piece of code, especially after many years. The first time you profile things, you find *big* hot-spots: code that is doing way too much work for no good reason -- you can usually kill that code easily and the program will perform much better. You kill a few big problems that way: refreshing things that didn't need to be refreshed, using trivially stupid algorithms, etc.
The next time you profile, you find deeper issues. You find problems with various moving parts, and the fix in each part is not obvious. You find places where results could be cached intelligently, or where you need a good re-architecting of the data structures.
It's only at the end of this process that you look into micro-optimizations. But most of our slow applications are slow because they are doing too much unnecessary work.
Kortom ddbruijn, jij denkt bij optimalisatie te veel aan hardware, het is ook de software waar geoptimaliseerd kan worden. Uit het interview blijkt dat nieuwe hardware niet van een dergelijk grote invloed is. Immers, ieder systeem heeft werkgeheugen en een CPU, het verschil is dat de nieuwe systemen het sneller en meer hebben dan oudere systemen. Desondanks kan je nog steeds optimaliseren om geheugen en CPU-verbruik te beperken en software te versnellen.
Ook KDE 4 kan op een betere performance rekenen omdat de Qt 4
minder geheugen gebruikt dan Qt 3.
Misschien is nog wel het beste voorbeeld dat Compiz Fusion onder Linux genoegen neemt met een Intel GMA 950 onboard video chip voor een desktop met 3D-acceleratie en allerlei bling. Zo ook de grafische effecten van Mac OS X, een Mac Mini gebruikt ook een Intel GMA 950. Maar Vista daarentegen heeft
systeemeisen die toch wel fors zijn wat betreft werkgeheugen en een processor. Nou schijnt het dat een Intel GMA 950 ook nog net werkt met
Aero, maar Linux en Mac OS X kunnen af met een sub-1Ghz CPU en met minder dan 1 GB geheugen. Linux heeft zelfs in combinatie met GNOME of KDE genoeg aan 256 MB, daar is dan fatsoenlijk mee te werken.
Dus ik denk, het kan wel degelijk anders, maar sommige ontwikkelaars (Microsoft) zijn misschien wat lui wat betreft optimaliseren.
Kortom ddbruijn, jij denkt bij optimalisatie te veel aan hardware, het is ook de software waar geoptimaliseerd kan worden.
Het ging juist om software specifiek optimaliseren voor hardware, dat is toch het grote verschil tussen C64/Amiga/game consoles en hedendaagse PCs?
Uit het interview blijkt dat nieuwe hardware niet van een dergelijk grote invloed is. Immers, ieder systeem heeft werkgeheugen en een CPU, het verschil is dat de nieuwe systemen het sneller en meer hebben dan oudere systemen. Desondanks kan je nog steeds optimaliseren om geheugen en CPU-verbruik te beperken en software te versnellen.
Daar zit hem dus nou net het probleem...
Dit is juist WEL hardware-gebonden.
Denk nou eens na...
Wat is de ideale balans tussen geheugengebruik en CPU-gebruik?
Dat hangt dus grofweg van 4 factoren af:
1) Geheugengrootte
2) Geheugenbandbreedte
3) Cachegrootte
4) Instructieset
Die 4 factoren zijn dus constant variabel.
Als ik nu m'n datastructuren inricht om zo efficient mogelijk om te gaan met CPU, geheugen en cache, dan is dat volgend jaar achterhaald.
Nu moet ik misschien kiezen om bepaalde dingen compacter in het geheugen op te slaan, ten koste van een aantal extra instructies. Volgend jaar heb je meer geheugen of grotere cache, en kun je beter de data wat minder compact opslaan.
Of je hebt een nieuwe instructieset die juist de data weer in een andere volgorde aangevoerd wil hebben.
Dus ik denk, het kan wel degelijk anders, maar sommige ontwikkelaars (Microsoft) zijn misschien wat lui wat betreft optimaliseren.
Of richten zich op een ander basissysteem om hun optimalisaties op te baseren.
Verder vind ik het weer jammer dat het weer neerkomt op een "Ja maar linux is beter dan Windows"-verhaal, zoals zo vaak hier op tweakers.
Ik voelde hem eigenlijk al aankomen omdat jouw post getuigt van een gebrek aan een dieper inzicht.