Skrevs ursprungligen av thorman
Eh? Vilka förändringar förutom omkompilering med korrekt optimerande kompilator menar du skulle vara aktuella? Förutsatt att programmet inte är handknackat i assembler då...
Det är massa saker man måste tänka på för att få ett fullt optimerat program. Kompilatorn kan inte åstadkomma magiska grunkor av sig själv. En G5 kan hantera fler register än en G4, därför lönar det sig att använda lokala variabler istället för globala, t ex. Att fylla register med det data som "bäst behövs där" är en uppgift som inte alltid kan bestämmas vid compile-time, du som programmerare vet i många fall mer än kompilatorn. Det är ett stort straff att typkonvertera mellan t ex float och int. Detta undviker man i källkoden, inte med kompilatorn.
Vissa datatyper i vissa språk har bestämd storlek. 16-bitarsheltal, 32-bitars heltal eller 64-bitars, te x. Andra datatyper har "odefinerat" storlek. Du kan beroende på ordlängd hos processorn tjäna på att använda datatyper av rätt storlek. Kompilatorn får inte bryta mot språkets begränsningar, utan du som programmerare måste optimera för en speciell ordlängd, eller hitta en avvägning.
Optimera för en processor (eller ordlängd) kan övergripande göras i två steg. Dels optimerar man källkoden och dels låter man kompilatorn optimera i kodgenereringen. Man kan självklart bara göra det ena av dom två stegen, men då får man ju inte full effekt. Däremot kan ju markndsavdelningen basunera ut att man har "G5-optimerat" den nya versionen av "Splatter Joe G5" bara man gör det ynkligase minsta man kan.