Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Die größer Zahl nehmen ? (https://www.delphipraxis.net/128930-die-groesser-zahl-nehmen.html)

Laufi 9. Feb 2009 23:10

Re: Die größer Zahl nehmen ?
 
Hallo!

Wenn Du es ganz krass machen willst kannst du es auch so machan :shock: :lol:

Delphi-Quellcode:
function Max(const A, B: Integer): Integer;
asm
  CMP EAX, EDX;
  CMOVL EAX, EDX;
end;
Liebe Grüsse Laufi

globetrotter77 9. Feb 2009 23:19

Re: Die größer Zahl nehmen ?
 
@Laufi:

wenn schon, dann
Delphi-Quellcode:
type irgendwas = Integer;
     nochmalwas = irgendwas;
function tu_mal_was_von_alleine_und_frag_nicht_lange_nach_dem_sinn_von_dem_ganzen((const kleine_oder_grosse_zahl, grosse_oder_kleine_zahl: irgendwas): nochmalwas;

Cyf 9. Feb 2009 23:21

Re: Die größer Zahl nehmen ?
 
Zitat:

Delphi-Quellcode:
function Max(const A, B: Integer): Integer;
begin
  if A > B then
    Result := A
  else
    Result := B;
end;

[OFFTOPIC]Warum ist hier eigentlich das const sinnvoll? Übergibt man die Zahlen direkt sind sie je 4 Bytes groß, ein Pointer der zusätzlich noch dereferenziert werden muss, ist das je auch. Theoretisch ist das doch unnötiger zusätzlicher Aufwand - ja klar es ist nicht wirklich spürbar und zudem, trotzdem die selbe Anzahl Opcodes (vermutlich, ungetestet), allerdings müsste ja ein direkter Wert (in meiner Logik) dennoch schneller sein als dereferenzieren? Und natürlich gibt es auch noch den schlichten Punkt, dass ein const Programmierfehler verhindern kann.

Cyf 9. Feb 2009 23:23

Re: Die größer Zahl nehmen ?
 
Zitat:

Zitat von Laufi
Hallo!

Wenn Du es ganz krass machen willst kannst du es auch so machan :shock: :lol:

Delphi-Quellcode:
function Max(const A, B: Integer): Integer;
asm
  CMP EAX, EDX;
  CMOVL EAX, EDX;
end;
Liebe Grüsse Laufi

Vergleichst du hier nicht Adressen?

Laufi 9. Feb 2009 23:27

Re: Die größer Zahl nehmen ?
 
Du meinst wegen dem const? Nein das ist ihm gleich bei den kleinen typen :o

globetrotter77 9. Feb 2009 23:28

Re: Die größer Zahl nehmen ?
 
Zitat:

Warum ist hier eigentlich das const sinnvoll?
Ist mir auch nicht ganz klar, und ich würde es auch nicht machen.
Die Online-Hilfe ist in solchen Fällen leider gar nicht mehr hilfreich.

Laufi 9. Feb 2009 23:32

Re: Die größer Zahl nehmen ?
 
Er übergibt nur bei grossen typen die adresse wenn man const schreibt, er ist ja nicht dumm! Das const macht also nichts langsamer es ist nur zur schutz für den Programmierer :roll:

Cyf 9. Feb 2009 23:35

Re: Die größer Zahl nehmen ?
 
Zitat:

Zitat von Laufi
Er übergibt nur bei grossen typen die adresse wenn man const schreibt, er ist ja nicht dumm! Das const macht also nichts langsamer es ist nur zur schutz für den Programmierer :roll:

Hmm, das macht dann natürlich mehr Sinn (auch wenn man dann bei asm auch noch nachdenken muss :wink: ). Ich teste das morgen mal kurz für mich, mir jetzt zu spät.

himitsu 10. Feb 2009 08:40

Re: Die größer Zahl nehmen ?
 
ist entweder drin, weil es bei den anderen Max-Funktionen auch drin ist ... sieht einheitlicher aus
und eventuell könnte es vorteile für den Inline-Code haben.

PS: die Pascalversion ist am Ende schneller, als das ASM von dort oben, da in Delphi diese Funktion als INLINE-Code defniert ist.
heißt, im Programm gibt es diese Funktion dann nicht, da der Vergleich direkt vor Ort in deinen Quellcode integriert wird.
(bei dem ASM gibt es diese Funktion, wo erst hin- und dann wieder zurückgesprungen werden muß)

sirius 10. Feb 2009 08:47

Re: Die größer Zahl nehmen ?
 
In D7 ist es kein inline (gibts das hier überhaupt?)


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:07 Uhr.
Seite 2 von 3     12 3      

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