een compiler kan vanalles zolang er geen algebra bij komt kijken, dus als je inderdaad in je code wat zou gaan goochelen met variabelen kan ik me inbeelden dat dat arme programma de kluts kwijtraakt (
) en daarom zijn compilers eigenlijk ook niet veel verandert. In sommige gevallen kunnen ze optimaliseren, maar meestal wordt met optimaliseren bedoelt dat ze de code zelf niet meer in ere moeten laten. Dat heeft tot gevolg dat ze beter pipelining technieken criëren, en bijvoorbeeld veel gevraagde berekeningen naar buiten brengen: voorbeeld:
wordt door een compiler meestal vervangen door:
al vraag ik me af of we nu niet een beetje off-topic gaan.
In een boek "Write Great Code: Part I understanding the machine" wat ik nu aan het lezen ben, staat er dat een compiler van vandaag nauwelijks betere code oplevert dan een compiler van pakweg 10 jaar geleden.
Het enige wat misschien verandert is, is dat er nu ook in enkele compilers een lijst met belangrijke algoritmen en hun optimalisatie zit, als bijvoorbeeld de compiler ziet dat je selectionSort gebruikt kan het zijn dat hij dat inwendig omzet naar QuickSort
EDIT: Nee, nee, hardware levert normaal altijd beter (sneller) resultaat. Omdat software vereist dat er verschillende stappen bij komen kijken in de processor, vraagt dit dus nog een organisatie in de processor, terwijl wanneer er een module is die dat doet, deze maar een tick in beslag neemt.