AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

LoopRollout bei konstanten schleifen?

Ein Thema von Memnarch · begonnen am 1. Dez 2011 · letzter Beitrag vom 1. Dez 2011
Antwort Antwort
Benutzerbild von Memnarch
Memnarch

Registriert seit: 24. Sep 2010
737 Beiträge
 
#1

LoopRollout bei konstanten schleifen?

  Alt 1. Dez 2011, 09:36
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
Da man Trunc nicht auf einen Integer anwenden kann, muss dieser zuerst in eine Float kopiert werden
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.481 Beiträge
 
Delphi 10.1 Berlin Professional
 
#2

AW: LoopRollout bei konstanten schleifen?

  Alt 1. Dez 2011, 11:11
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).
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.679 Beiträge
 
Delphi 2007 Enterprise
 
#3

AW: LoopRollout bei konstanten schleifen?

  Alt 1. Dez 2011, 11:27
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?
"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 Memnarch
Memnarch

Registriert seit: 24. Sep 2010
737 Beiträge
 
#4

AW: LoopRollout bei konstanten schleifen?

  Alt 1. Dez 2011, 11:53
@Medium: die gezeigte schleife war nur zur veranschaulichung(bevor jemand meine beschreibung falsch versteht ).

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
Da man Trunc nicht auf einen Integer anwenden kann, muss dieser zuerst in eine Float kopiert werden
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.679 Beiträge
 
Delphi 2007 Enterprise
 
#5

AW: LoopRollout bei konstanten schleifen?

  Alt 1. Dez 2011, 12:02
Da ist bestimmt auch was mit SSE/2/3 rauszuholen
"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 Memnarch
Memnarch

Registriert seit: 24. Sep 2010
737 Beiträge
 
#6

AW: LoopRollout bei konstanten schleifen?

  Alt 1. Dez 2011, 12:16
@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
Da man Trunc nicht auf einen Integer anwenden kann, muss dieser zuerst in eine Float kopiert werden
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 10:28 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