/ Forside / Teknologi / Udvikling / Delphi/Pascal / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Delphi/Pascal
#NavnPoint
oldwiking 603
jrossing 525
rpje 520
EXTERMINA.. 500
gandalf 460
gubi 270
DJ_Puden 250
PARKENSS 230
technet 210
10  jdjespers.. 200
For loop
Fra : Kurt Guldbæk


Dato : 08-02-06 13:34

Jeg har 4 "For Var := 1 to 3"-loop inden i hinanden med hebholdsvis i, j, x
og y.
Når jeg tracer gennem loopen starter i og j med 3 og tæller nedad medens x
og y starter med 1 og tæller opad.
Er det noget, som jeg er herre over ved ent ikke at bruge så mange loop
inden i hinanden?

Det er da noget værre rod at trace i, selv om resultatet i sidste ende er
det samme!!

Mvh Kurt



 
 
Brian Andersen \(www~ (08-02-2006)
Kommentar
Fra : Brian Andersen \(www~


Dato : 08-02-06 14:00

Det er fordi du har optimization sat aktiv i din compiler. Hvis du ikke skal
bruge tæller variablen til noget, så er det jo lige meget om der tælles op
eller ned. Ik', sandt. Bare løkken kun aktiveres det bestemt antal gange.

CPU'ens instruktioner udføreres hurtigere, hvis CPU'en tæller ned af. Den
oversatte kode kan oversættes med nogle hurtigere instruktioner. Derfor
optimerer Delphi Maskinkode Instruktionerne således, at der tælles ned af,
hvis tæller variablen ikke bruges nogen steder. Der er hurtigst for CPU'en
at udføre.

/Brian



Kurt G (08-02-2006)
Kommentar
Fra : Kurt G


Dato : 08-02-06 22:57

"Brian Andersen (www.europeansoftwarehouse.com)" <x@x.x> skrev i en
meddelelse news:QUlGf.474$0P4.450@news.get2net.dk...
> Det er fordi du har optimization sat aktiv i din compiler. Hvis du ikke
> skal bruge tæller variablen til noget, så er det jo lige meget om der
> tælles op eller ned. Ik', sandt. Bare løkken kun aktiveres det bestemt
> antal gange.
>
> CPU'ens instruktioner udføreres hurtigere, hvis CPU'en tæller ned af. Den
> oversatte kode kan oversættes med nogle hurtigere instruktioner. Derfor
> optimerer Delphi Maskinkode Instruktionerne således, at der tælles ned af,
> hvis tæller variablen ikke bruges nogen steder. Der er hurtigst for CPU'en
> at udføre.
>
> /Brian
Tak for svaret. Det hjalp at slå optimering fra. Så skal man blot huske at
slå den til til den endelige kompilering!
Mvh Kurt



Thor (08-02-2006)
Kommentar
Fra : Thor


Dato : 08-02-06 22:01

Jeg kan ikke genskabe den opførsel.
I følgende test har alle tællerne værdien 4 efter gennemløb af
løkkerne,
både med og uden optimering.

mvh Thor

procedure TForm1.FormCreate(Sender: TObject);
var a,b,c,d,t : integer;
begin

t:= 0;

for a := 1 to 3 do
for b := 1 to 3 do
for c := 1 to 3 do
for d := 1 to 3 do
t := t + 1;
caption := inttostr(t);
caption := caption +' '+inttostr(a);
caption := caption +' '+inttostr(b);
caption := caption +' '+inttostr(c);
caption := caption +' '+inttostr(d);
end;


Kurt G (08-02-2006)
Kommentar
Fra : Kurt G


Dato : 08-02-06 22:58

Så har du måske haft optimeringen slået fra?
/Kurt

"Thor" <dur.ikke@gmail.com> skrev i en meddelelse
news:1139432433.030486.108330@f14g2000cwb.googlegroups.com...
Jeg kan ikke genskabe den opførsel.
I følgende test har alle tællerne værdien 4 efter gennemløb af
løkkerne,
både med og uden optimering.

mvh Thor

procedure TForm1.FormCreate(Sender: TObject);
var a,b,c,d,t : integer;
begin

t:= 0;

for a := 1 to 3 do
for b := 1 to 3 do
for c := 1 to 3 do
for d := 1 to 3 do
t := t + 1;
caption := inttostr(t);
caption := caption +' '+inttostr(a);
caption := caption +' '+inttostr(b);
caption := caption +' '+inttostr(c);
caption := caption +' '+inttostr(d);
end;



Søg
Reklame
Statistik
Spørgsmål : 177579
Tips : 31968
Nyheder : 719565
Indlæg : 6409073
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste