AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi FOR-Schleifenvariable muss eine lokale Variable sein. Warum?
Thema durchsuchen
Ansicht
Themen-Optionen

FOR-Schleifenvariable muss eine lokale Variable sein. Warum?

Ein Thema von madbrain · begonnen am 23. Aug 2003 · letzter Beitrag vom 24. Aug 2003
Antwort Antwort
jbg

Registriert seit: 12. Jun 2002
3.485 Beiträge
 
Delphi 10.1 Berlin Professional
 
#1

Re: FOR-Schleifenvariable muss eine lokale Variable sein. Wa

  Alt 24. Aug 2003, 18:00
Code:
Befehle     Taktzyklen
-----------------------
DEC ECX     1
JNZ Beginn  3

LOOP Beginn 6
Die Taktzyklen beziehen sich auf einen i486 und stammen aus dem Referenzhandbuch von Borland zu Turbo Assembler.


Hier ein Geschwindigkeitstest:
Delphi-Quellcode:
function RDTSC: Int64;
asm
        RDTSC
end;

function Test_Loop(Count: Integer): Int64;
asm
        MOV ECX, EAX
        RDTSC // Startzeit ermitteln (Result=EDX:EAX)
@@Repeat:
        LOOP @@Repeat
end;

function Test_DecJcc(Count: Integer): Int64;
asm
        MOV ECX, EAX
        RDTSC // Startzeit ermitteln (Result=EDX:EAX)
@@Repeat:
        DEC ECX
        JNZ @@Repeat
end;

procedure TForm1.Button1Click(Sender: TObject);
const
  Count = $5fffffff;
var
  t1, t2: Int64;
begin
  try
    SetPriorityClass(GetCurrentProcess, REALTIME_PRIORITY_CLASS);
    SetThreadPriority(GetCurrentThread, THREAD_PRIORITY_TIME_CRITICAL);

    t1 := Test_Loop(Count);
    t1 := RDTSC - t1;

    t2 := Test_DecJcc(Count);
    t2 := RDTSC - t2;

  finally
    SetPriorityClass(GetCurrentProcess, NORMAL_PRIORITY_CLASS);
    SetThreadPriority(GetCurrentThread, THREAD_PRIORITY_NORMAL);
  end;

  Memo1.Lines.Add('LOOP : ' + IntToStr(t1));
  Memo1.Lines.Add('DEC/Jcc: ' + IntToStr(t2));
  Memo1.Lines.Add('');
end;
Auf P4 2GHz kommen im Schnitt folgende Werte zustande:
Code:
LOOP  : 538596152
DEC/Jcc: 403735408
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:51 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz