Seite 2 von 2
Pascal-----Absoluta Beginna FAQ
Verfasst: Mo Mai 14, 2001 11:21 pm
von Katana
Wegen der Geschwindigkeit, kommt es darauf an, wie man die Sprache nutzt.
Man könnte einfach eine schleife basteln und schauen, welches Proggi länger braucht.
Ich meine damit eine Standardschleife.
PHP (C++?)
for ($i = 0; $ i == 100000;$i++)
{
// irgend ein idle hier rein
}
Pascal/Delphi:
for i := 0 to 100000 do
begin
// Delphi:
Application.ProcessMessages
// Pascal:
SinaP, das ist dein Gebiet *g* [idle]
end;
BASIC:
err...zu lange her
[ 15. Mai 2001: Beitrag editiert von: Katana ]
Pascal-----Absoluta Beginna FAQ
Verfasst: Mo Mai 14, 2001 11:53 pm
von Katana
Folgende Schleife dauerte bei mir in Delphi bei 10 Versuchen im Durschnitt 1026ms (1 Sek, 26ms) [1 Button, 2 Labels]:
<BLOCKQUOTE><font size="1" face="Verdana, Arial">Code:</font><HR><pre>
procedure TForm1.Button1Click(Sender: TObject);
var
DateTime : TDateTime;
i: LongInt;
h,h2,m,m2,s,s2,ms,ms2: word;
start, ende: LongInt;
begin
DateTime := Time; // aktuelle Uhrzeit und Datum speichern
DecodeTime(DateTime,h,m,s,ms); // Zeit speichern
for i := 0 to 1000000 do // Schleifen Anfang
begin
Application.ProcessMessages;
end; // Schleifen Ende
DateTime := Time; // aktuelle Uhrzeit und Datum speichern
DecodeTime(DateTime,h2,m2,s2,ms2); // Endzeit speichern
start := ((((ms)+s*1000)+m*60*1000)+h*60*60*1000);
ende := ((((ms2)+s2*1000)+m2*60*1000)+h2*60*60*1000);
Label2.Caption := 'MS: '+IntToStr(ms)+' MS2: '+IntToStr(ms2) + ' Start: '+IntToStr(start) + ' Ende: '+IntToStr(ende);
Label1.Caption := IntToStr(ende-start);
end;
</pre><HR></BLOCKQUOTE>
Auf einem P3, 1Ghz, 265MB RAM (111MB frei)
Pascal-----Absoluta Beginna FAQ
Verfasst: Di Mai 15, 2001 10:38 am
von SinaP
@Katana.
Das ist zwar nicht mein gebiet, aber damit Du nicht verzweifelst ...
<BLOCKQUOTE><font size="1" face="Verdana, Arial">Code:</font><HR><pre>
var
i : LongInt;
StopUhr : tTime;
begin
StopUhr.Init;
StopUhr.Start;
for i := 1 to 1000000 do begin
end;
StopUhr.Stop;
WT( 1,11,15, 0, 'Verstrichen = ' + StopUhr.GetStopZeit);
StopUhr.Done;
end.
</pre><HR></BLOCKQUOTE>
Braucht 0,00 sec, auch bei 10 versuchen und einer 500Mhz CPU.
cu
PS: Weiter oben steht ja von so einem hirni das C schneller ist als Pascal. Also screib Deinen code besser in C dann kannst auch mitreden
[ 15. Mai 2001: Beitrag editiert von: SinaP ]
Pascal-----Absoluta Beginna FAQ
Verfasst: Mi Mai 16, 2001 12:36 am
von Katana
*grml*
Das das bei dir 0,0 Sekunden braucht ist klar!
Hast ja auch nix zum idlen drin...
var
i : LongInt;
StopUhr : tTime;
begin
StopUhr.Init;
StopUhr.Start;
for i := 1 to 1000000 do begin
// HIER MUSS NOCH IRGENDWAS REIN !!!
end;
StopUhr.Stop;
WT( 1,11,15, 0, 'Verstrichen = ' + StopUhr.GetStopZeit); StopUhr.Done;
end.
Ohne irgendwas zum "Zeitvertreib" innerhalb der Schleife braucht das bei mir auch 0ms

Pascal-----Absoluta Beginna FAQ
Verfasst: Mi Mai 16, 2001 4:31 am
von SinaP
Stimmt, hast recht

hab das Idle vergessen reinzuschreiben.
Macht aber keinen unterschied, ist immer noch 0,00 sec
... Ich geb Dir einen Tipp

Wo es geht, einfach vermeiden das Windows die kontrolle über Dein programm bekommt. Du bist ja schlieslich der Author und nicht Windows. oder ???
cu