Entwickler-Ecke
Algorithmen, Optimierung und Assembler - bessere Geschwindigkeit: const oder Pointer
Bergmann89 - Mi 29.12.10 23:06
Titel: bessere Geschwindigkeit: const oder Pointer
Hey,
ich steh grad vor ne Frage, bei der ich nich richtig weiter weiß. Und zwar geht es bei meinem derzeitigen Projekt auch sehr stark um Performance, also versuch ich überall, wo ich was raus holen kann was raus zu holen, dass das Programm schneller läuft. Was mich zu der Frage führt, was beim Aufruf von Methoden schneller ist. Die Übergabe der Parameter mit const oder als Zeiger. Ich dachte immer, das const auch nix anderes sind als Zeiger, bei denen der dann der Compiler meckert, wenn man die schreiben will. Heut hab ich aber bemerkt, das der Parameter in der Methode eine andere Adresse haben, als die übergebene Variable. Nun die eigentliche Frage: Wäre ich da mit Pointern auf die Variable nicht schneller? Weil die Daten da nich nochma extra kopiert werden müssen. Nachteil daran is, das man versehentlich Variablen ändern kann, die man eigentlich nur Lesen wollte, aber da muss ich dann halt aufpassen was ich mach. Was meint ihr dazu?
MfG Bergmann.
platzwart - Do 30.12.10 01:49
Ich denke mal, da wird es nix performanteres als Pointer geben. Das Const ist doch nur dazu da, beim Compilieren festzustellen, ob du irgendwo aus Versehen einen schreibenden Zugriff auf die Variable programmiert hast...
Gerd Kayser - Do 30.12.10 03:29
Ich würde einen Profiler verwenden, um damit die Funktionen und Prozeduren zu ermitteln, in denen die meiste Zeit verplempert wird. Und dann genau da ansetzen. Alles andere ist nur Kosmetik ...
Profiler siehe z. B. hier:
http://www.prodelphi.de/
BenBE - Do 30.12.10 06:56
Const übergibt by-value, während pointer "by-ref" übergeben. Ohne separat selber aufpassen zu müssen, kannst Du da auch gleich var verwenden, was z.B. bei Omorphia an vielen Stellen in der Mathe-Bibliothek gemacht ist, obwohl die Parameter nicht angefasst werden. U.U. kannst Du dabei sogar ein Stackframe einsparen, was noch einmal etwas Geschwindigkeit bringt. Im Endeffekt kann Dir da aber nur ein Profiler weiterhelfen, obgleich ich bei allen "statisch instrumentalisierenden" Profilern abraten muss. Intel vTune oder AQTime liefern hier sehr gute Ergebnisse und funkltionieren bei eingeschalteten TD32-Debug-Symbolen auch für Delphi wunderbar.
Bergmann89 - Do 30.12.10 12:47
Hey,
ich weiß schon ungefähr, wo die langsamsten Stellen im Code sind, aber da hab ich schon so gut optimiert, wie es geht. Mit der Idee oben wollt ich das letzte aus dem Code rauskitzeln.
Ich werd die Tools aber trotzdem mal probieren, vlt hab ich ja noch irgendwo etwas übersehen. Dankeschön.
MfG Bergmann
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!