Pascal-----Absoluta Beginna FAQ

Hardware, Software, Webdesign & Coding.

Moderator: Katana

Benutzeravatar
Katana
Beiträge: 5337
Registriert: So Jan 02, 2000 1:01 am

Pascal-----Absoluta Beginna FAQ

Beitrag 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 Bild

[ 15. Mai 2001: Beitrag editiert von: Katana ]
Benutzeravatar
Katana
Beiträge: 5337
Registriert: So Jan 02, 2000 1:01 am

Pascal-----Absoluta Beginna FAQ

Beitrag 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)
SinaP
Beiträge: 248
Registriert: Sa Mär 11, 2000 1:01 am

Pascal-----Absoluta Beginna FAQ

Beitrag 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 Bild Bild

[ 15. Mai 2001: Beitrag editiert von: SinaP ]
Benutzeravatar
Katana
Beiträge: 5337
Registriert: So Jan 02, 2000 1:01 am

Pascal-----Absoluta Beginna FAQ

Beitrag 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 Bild
SinaP
Beiträge: 248
Registriert: Sa Mär 11, 2000 1:01 am

Pascal-----Absoluta Beginna FAQ

Beitrag von SinaP »

Stimmt, hast recht Bild hab das Idle vergessen reinzuschreiben.
Macht aber keinen unterschied, ist immer noch 0,00 sec Bild

... Ich geb Dir einen Tipp Bild Wo es geht, einfach vermeiden das Windows die kontrolle über Dein programm bekommt. Du bist ja schlieslich der Author und nicht Windows. oder ??? Bild

cu
Antworten