Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   inc(i,-20) oder dec(i,20) (https://www.delphipraxis.net/68053-inc-i-20-oder-dec-i-20-a.html)

Thanatos81 24. Apr 2006 07:43


inc(i,-20) oder dec(i,20)
 
Huhu!

Durch nen Vertipper hab ich just festgestellt, dass man bei inc auch eine negative Schrittweite übergeben kann :shock:

Da es ja nun auch dec gibt, mal eine nicht ernst gemeinte, Frage: Was ist schneller
Delphi-Quellcode:
inc(i, -20)
oder
Delphi-Quellcode:
dec(i, 20)
? :D

//Edit dank Vorschau-Funktion:
Mit dec mein ich wirklich die Prozedur aus der System.pas und nicht Hagens dec ;-)

Schönen Gruß,

sakura 24. Apr 2006 07:55

Re: inc(i,-20) oder dec(i,20)
 
Beide sind gleich schnell, egal ob positive oder negative Werte.

...:cat:...

himitsu 24. Apr 2006 07:59

Re: inc(i,-20) oder dec(i,20)
 
Test ... stimmt ... hast Recht ... etwa gleich ^^

sakura 24. Apr 2006 08:00

Re: inc(i,-20) oder dec(i,20)
 
Zitat:

Zitat von himitsu
Test ... stimmt ... hast Recht ... etwa gleich ^^

Schau Dir die OpCodes an ;-) Die sind gleich, nur kein Test unter Windows wird Dir das jemals 100%ig bestätigen können, da Windows ein Multitasking-OS ist und es immer zu Abweichungen kommt.

...:cat:...

himitsu 24. Apr 2006 08:05

Re: inc(i,-20) oder dec(i,20)
 
nicht nur das beide 1-3 Takte
je nach Prozessor und Parameter
selber Prozessor/Parameter = selber Anzahl nötiger Takte ^^


[add]
Der Test nur war schneller erledigt, als erst die ASM-Spec zu suchen ._.

DP-Maintenance 24. Apr 2006 17:33

DP-Maintenance
 
Dieses Thema wurde von "MrSpock" von "Klatsch und Tratsch" nach "Object-Pascal / Delphi-Language" verschoben.
Ist mehr als nur K&T.

Thanatos81 25. Apr 2006 09:05

Re: inc(i,-20) oder dec(i,20)
 
Hö? Tatsächlich wurde der Thread in den ernsten Bereich verschoben? Find ich ja mal nett :D

Ich hab übrigens auch mal nen kleinen Test gefahren. Habe jeweils eine Schleife für inc und dec genommen und per TickCount die Laufzeit gemessen. Dass dann danach auf Zeit/1000 Durchläufe uzmgerechnet. Die Schleífe sah ungefähr so aus
Delphi-Quellcode:
for i := low(Cardinal) to high(Cardinal) do
begin
inc(i,-20)
end;
.

Naja und was soll ich sagen? Die Differenz der Durchschnittszeiten lag unter 0,05 %. Das sollen die Physiker bei ihren Versuchen mal hinkriegen :D

Der_Unwissende 25. Apr 2006 09:21

Re: inc(i,-20) oder dec(i,20)
 
[OT]
Zitat:

Zitat von Thanatos81
Naja und was soll ich sagen? Die Differenz der Durchschnittszeiten lag unter 0,05 %. Das sollen die Physiker bei ihren Versuchen mal hinkriegen :D

Hm, dir ist aber schon klar, dass deine relative Messungenauigkeit von den Physikern sicherlich höher als 0,05% angesehen werden wird ;-)

[/OT]

SirThornberry 25. Apr 2006 11:21

Re: inc(i,-20) oder dec(i,20)
 
und wem die Inc-Funktion nicht gefällt der kann natürlich auch generell Dec nutzen:
Delphi-Quellcode:
dec(i, -20); //=inc(i, 20)

himitsu 25. Apr 2006 14:35

Re: inc(i,-20) oder dec(i,20)
 
Also, wie schon sakura sagte, müssen die Ausführungszeiten gleich sein, da beide Befehle jeweils die selbe Taktanzahl benötigen.

Qelle: Potemkin's Hackers Group - Mitarbeiter von Intel, AMD, TI, Cyrix und UMC - und andere


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:00 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz