Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Integer + 1 (https://www.delphipraxis.net/112753-integer-1-a.html)

XPLOSIV 26. Apr 2008 11:09


Integer + 1
 
Also ich will eine Variable immer um 1 erhöhen und dann anzeigen lassen.

Wie geht das ?

Wal 26. Apr 2008 11:12

Re: Integer + 1
 
Inc(i);
Label1.Caption := IntToStr(i);

Wal

lbccaleb 26. Apr 2008 11:32

Re: Integer + 1
 
Zitat:

Zitat von Wal
Inc(i);
Label1.Caption := IntToStr(i);

Wal

oder

Delphi-Quellcode:
i := i + 1; //das aber nicht ganz so schön die methode

fLaSh11 26. Apr 2008 12:36

Re: Integer + 1
 
Aber höchstwahrscheinlich viel schneller!

BUG 26. Apr 2008 12:38

Re: Integer + 1
 
Zitat:

Zitat von fLaSh11
Aber höchstwahrscheinlich viel schneller!

Echt?
Zitat:

Zitat von Delphi3-Hilfedatei
Inc generiert hochoptimierten Maschinencode und ist besonders für Schleifen geeignet.

MfG,
Bug

Mao 26. Apr 2008 12:44

Re: Integer + 1
 
Ein guter Compiler sollte beides zum nahezu selben Maschinencode umwandeln.

grenzgaenger 26. Apr 2008 12:55

Re: Integer + 1
 
Ein Blick in das Debuggfenster hilft da meist weiter.

Demoprojekt:
Delphi-Quellcode:
program Project1;

{$APPTYPE CONSOLE}

uses
  SysUtils;
var
 i: integer;
begin
 i := 0;
 inc(i);
 i := i + 1;
 writeln(i);
 readln;
end.
relevante zeilen assemblercode
Code:
Project1.dpr.10: i := 0;
0040914D 33DB            xor ebx,ebx
Project1.dpr.11: inc(i);
0040914F 43               inc ebx
Project1.dpr.12: i := i + 1;
00409150 43               inc ebx
Project1.dpr.13: writeln(i);
00409151 A1F0A94000       mov eax,[$0040a9f0]
unter D2006 compiliert.

Denke der assemblercode sagt alles.

grüsse GG

PS: sah grad, dass du mit D3 arbeitest. da sollte es noch einen unterschied machen. übernimm doch mal das beispiel und quote das ASM resultat..

1234588 26. Apr 2008 14:26

Re: Integer + 1
 
ich hab in irgendeinem buch mal gelesen, das
Code:
  ADD EAX,1
auch schneller als
Code:
  INC EAX
sein soll

sakura 26. Apr 2008 14:58

Re: Integer + 1
 
Zitat:

Zitat von 1234588
ich hab in irgendeinem buch mal gelesen, das
Code:
  ADD EAX,1
auch schneller als
Code:
  INC EAX
sein soll

Ist es aber nie. ;-) Auf modernen Prozessoren benötigt INC immer nur einen Taktzyklus bei direktem Zugriff auf Register, max. 3 bei Variablen.

Bei ADD verhält es sich inzwischen übrigens identisch ;)

...:cat:...

3_of_8 26. Apr 2008 15:56

Re: Integer + 1
 
Zitat:

max. 3 bei Variablen.
Sicher? Was ist wenn die Variable im Speicher liegt? Das müsste dann doch zumindest beim ersten mal einen Cache-Fehlzugriff verursachen und die Variable müsste aus dem Speicher angefordert werden, was schon mal gerne an die 100 Zyklen dauern kann.


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:45 Uhr.
Seite 1 von 3  1 23      

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