Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Delphi LoopRollout bei konstanten schleifen? (https://www.delphipraxis.net/164821-looprollout-bei-konstanten-schleifen.html)

Memnarch 1. Dez 2011 09:36

LoopRollout bei konstanten schleifen?
 
Tag allerseits,
was ich mal wissen wollte:
Wenn ich eine schleife habe wie z.B.

Delphi-Quellcode:
for i := 0 to 3 do
begin
 Value := Value + i;
end;
Löst delphi diese schleife auf und schreibt anstatt der schleife alle durchgänge untereinander?
Habe mal vor längerem ein paar Matrix klassen zur matrixkalkulation geschrieben(als vorlage diente klassenloser c++ code). Wenn dort kalkuliert wird, habe ich IMMER schleifen mit konstantem durchlauf.

War noch nicht dazugekommen den generierten ASM code anzugucken. Wäre einfach mal interressant zu wissen.

MFG
Memnarch

jbg 1. Dez 2011 11:11

AW: LoopRollout bei konstanten schleifen?
 
Der aktuelle sowie frühere Delphi Compiler beherrschen kein Loop-Unrolling. Die Delphi Compiler führen fast überhaupt keine ordentlichen Optimierungen durch. Am Optimizer wurde anscheinend schon seit Jahrzehnten nichts mehr gedreht (bis auf die kurzzeitige Anti-Optimierung im Delphi 7 Update 1 Compiler).

Medium 1. Dez 2011 11:27

AW: LoopRollout bei konstanten schleifen?
 
Wie viel brächte Unrolling auf den aktuellen CPUs überhaupt? Bei Shadern ist der Gewinn ja sehr deutlich (bzw. konnten viele GPUs bis vor kurzem nichtmals das langsame dynamic branching), aber ist da wirklich was rauszuholen? Gerade bei doch eher kurzen Schleifchen wie der gezeigten?

Memnarch 1. Dez 2011 11:53

AW: LoopRollout bei konstanten schleifen?
 
@Medium: die gezeigte schleife war nur zur veranschaulichung(bevor jemand meine beschreibung falsch versteht :P).

Bei mir sinds real 2 verschachtelte schleifen die jeweils 4 durchgänge(0-3) machen um die 4*4 matrix zu berechnen. Da die dinger in meinem alten softwarerenderer eingesetzt werden, summiert sich auch ein kleiner schubgewinn ;).

Wobei ich die schleifenschreibweise solange lasse wies geht. ist halt schöner zu lesen :D

Medium 1. Dez 2011 12:02

AW: LoopRollout bei konstanten schleifen?
 
Da ist bestimmt auch was mit SSE/2/3 rauszuholen :)

Memnarch 1. Dez 2011 12:16

AW: LoopRollout bei konstanten schleifen?
 
@Medium: Natürlich. Aber das will ich später machen. Wenn alles rund läuft(funktionsmässig) will ich stück für stück einzelne funktionen optimieren, damit ich die resultate vergleichen kann.

Erstmal bleibts also HighLevel code :P


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:21 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