C++ kapiere 'range based for loops' nicht

Also nur bei aggressiver Optimierung (O3 in clang), ist das Ergebnis identisch zu einer normalen Forschleife.
Mit normaler Optimierung immernoch ein Messbarer Unterscheid, aber darum geht es ja nicht.

Es geht mir um den signifikanten Unterschied ohne Optimierung, der für mich sehr wohl relevant ist.

Meine C++ Spiele haben integrierte Werkzeuge damit ich den Zustand von Objekten/Performance zur Laufzeit prüfen kann - das geht auch im Releasemodus, aber dann kann ich nicht wirklich in den Code reinspringen. Daher sowas wie das Rangeiterator-Ding würde mir nie in den Code kommen, normale forschleife und gut ist.
 
Zuletzt bearbeitet:
Sicher kann man der Meinung sein, dass es hier auch eine for-Schleife tut, aber die Argumentation, dass es sinnvoll ist unoptimierte Builds durch solche Kleinigkeiten "manuell" zu optimieren ist absurd.
Wer meint unoptimierter Code sollte genauso schnell sein wie optimierter, hat den Zweck von Compiler-Optimierungen nicht verstanden.

Die einzigen die Performance eines Debug-Builds überhaupt interessieren kann sind die Entwickler. Alle anderen Beteiligten beurteilen die Software auf Basis eines optimierten Release-Builds. Das ist das Produkt, das wird bezahlt.
Dass man sich als Entwickler das Leben leichter machen will, ist völlig legitim aber das darf nicht auf Kosten der Lesbarkeit (die leidet in aller Regel immer als erstes) gehen. Wenn ich mich dafür um den Overhead von Schleifen kümmern muss, mache ich ziemlich sicher was falsch (außer habe wirklich extrem begrenzte Ressourcen oder eine (Near-)Realtime-Anforderung).

Performance ist sowieso immer relativ, weshalb sich erheblicher Aufwand für viel mehr als "schnell genug" (aus Sicht des Endanwenders!) praktisch nie auszahlt. Solange die "gefühlte" Performance stimmt ist mir auch die Anzahl der Instruktionen im optimierten Build ziemlich egal solange ich Code habe der besser wartbar ist und die Anforderungen deutlicher ausdrückt.

Will aufs Thema bezogen heißen: Wenn TE meint, ein Range-based Loop drückt die Intention klarer aus bekommt dadurch keine spürbaren Performanceprobleme, dann ist das aus meiner Sicht der richtige Weg.
 
Bedankt für die vielen lesenswerte Kommentare :)
 
Zurück
Oben