AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Schleifenvariable beschreiben, ...

Ein Thema von Corpsman · begonnen am 19. Jul 2009 · letzter Beitrag vom 20. Jul 2009
Antwort Antwort
Seite 2 von 2     12   
Medium

Registriert seit: 23. Jan 2008
3.685 Beiträge
 
Delphi 2007 Enterprise
 
#11

Re: Schleifenvariable beschreiben, ...

  Alt 20. Jul 2009, 07:27
Vorsicht ist hier dennoch geboten. Je nach Verwendung der Schleifenvariable macht der Compiler unterschiedliche Dinge bei der Optimierung. So wird auch gerne mal eine "for x=N to K" Schleife im Kompilat zu einer "for x=(K-N) downto 0" Schleife, da eine Prüfung auf 0 i.A. schneller ausfällt als eine auf beliebige Zahlen. Wenn man dann das Register von x auf solche Weise inkrementiert kann man sich vorstellen dass es ziemlich hässlich wird.

Wenn man sowas wie stepping in Delphi braucht, nimmt man sich am besten eine while- oder repeat-Schleife her. Die ist dann auch nicht viel langsamer, dafür aber gesichert richtig. Und die zwei Zeilen mehr im Code sind es denke ich nun wirklich nicht wert da seltsame Dinge zu tun um sie zu vermeiden.

Ich bin ja auch ein Freund von Dingen die man nicht tut, bzw. Fummelein die Möglichkeiten eröffnen. Aber in "ernsthaften" Projekten hat sowas 0,nix verloren. Das sind Dinge die schön zu wissen sind, anwenden: Besser nicht.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.035 Beiträge
 
Delphi 12 Athens
 
#12

Re: Schleifenvariable beschreiben, ...

  Alt 20. Jul 2009, 07:49
Da hier ein Pointer auf die Variable geholt wird, macht der Compiler eigentlich keine diesbezüglichen Optimierungen.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#13

Re: Schleifenvariable beschreiben, ...

  Alt 20. Jul 2009, 08:01
Es ist nur die Frage was passiert, wenn der Compiler aus Performancegründen die Laufrichtung umdrehet und man manuelle den Zähler erhöht
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.035 Beiträge
 
Delphi 12 Athens
 
#14

Re: Schleifenvariable beschreiben, ...

  Alt 20. Jul 2009, 08:11
Das macht er nur, wenn innerhalb der Schleife nicht direkt auf die Zählervariale zugegriffen, bzw. wenn sie garnicht verwendet wird.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von Aphton
Aphton

Registriert seit: 31. Mai 2009
1.198 Beiträge
 
Turbo Delphi für Win32
 
#15

Re: Schleifenvariable beschreiben, ...

  Alt 20. Jul 2009, 11:26
Zitat von Medium:
Wenn man sowas wie stepping in Delphi braucht, nimmt man sich am besten eine while- oder repeat-Schleife her.
Das muss nicht unbedingt sein.
Ein einfaches "continue" tuts auch

Delphi-Quellcode:
  for i := 0 to 10 do
  begin
    if not( i mod 2 = 0) then
      Continue;
    ShowMessage( 'Nur gerade Zahlen :D [' + inttostr(i) + ']' );
  end;
MfG
das Erkennen beginnt, wenn der Erkennende vom zu Erkennenden Abstand nimmt
MfG
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.035 Beiträge
 
Delphi 12 Athens
 
#16

Re: Schleifenvariable beschreiben, ...

  Alt 20. Jul 2009, 11:34
wenn dann eher so
Delphi-Quellcode:
for i := 0 to 5 do
begin
  i2 := i * 2
  ShowMessage( 'Nur gerade Zahlen :D [' + inttostr(i2) + ']' );
end;
geh mal mindestens in Tausendershritten ... da wäre das sehr unökonomisch die Schleife je 9999 mal anzufangen und nur je einmal abzuarbeiten
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:25 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