Kann jetzt nicht alles im Detail beantworten. Aber ein paar Sachen schon.
inc(i) ist besser als i:=i+1. Da bei dem zweiten Konstrukt quasi eine temporäre Variable erzeugt wird und bei inc direkt der speicherbereich der Variablen um 1 erhöht wird.
Das mit result resultiert glaube daraus, dass diese immer im einem Register abgelegt wird. Bedeutet also, wenn du direkt in der ersten Zeile der Funktion result:=1 schreibst, dann wird das register bis zum Prozedur ende belegt und steht für Schleifen nicht mehr zur Verfügung.
Bei div und / liegt der unterschied in den Assembler Anweisungen. Bei / wird die FPU genutzt (muss ja) und diese ist langsamer als die Integer-Division.
Sicherlich sind Pointer auf einen Array-Eintrag besser. Aber in einer Konstruktion wie
Delphi-Quellcode:
for i:=0 to 10 do
Arr[i]:=10;
erzeugt Delphi automatisch einen Pointer und zählt diesen immer hoch bzw. runter. Bei schleifen wird nämlich immer versucht eine Prüfung gen 0 zu erreichen, da diese schneller ist als die Prüfung gegen 10.
Naja erstmal ein paar Sachen für den Anfang