Ich entwickelte eine Skript-Engine, die viele integrierte Funktionen hat, so dass jeder Code in eine Wand, die den Namen, aber ich würde gerne eine effizientere Lösung entwickeln würde .Verwenden einer STL-Karte von Funktionszeigern
Sollte ich eine hashmap mit Strings als Schlüssel und Zeiger als Werte verwenden? Wie kann ich dies mithilfe einer STL-Map tun?
EDIT: Ein weiterer Punkt, in dem Sinn kam: natürlich eine Karte mit nicht den Compiler zwingen Funktionen inline, aber mein ineffizienter Ansatz nicht Overhead durch die Notwendigkeit der Funktionsaufrufe generiert haben hat, es führt nur Code aus.
So frage ich mich, ob der Overhead durch den Funktionsaufruf besser als eine if..else
Kette sein würde .. sonst könnte ich die Anzahl der Vergleiche durch Überprüfung eines Zeichens zur Laufzeit (wird länger, aber schneller) minimieren.
Auch gibt es keine Notwendigkeit, eine echte Hash-Tabelle wie 'unordered_map' zu verwenden. Es wird nicht so viele Elemente geben, dass eine Hash-Tabelle Performance-Vorteile bringen würde. Ich wäre sogar nicht überrascht, wenn "map" in diesem Fall schneller wäre. – sth
Eigentlich habe ich ein paar ähnliche Sachen gemacht und 'unordered_map' war * viel * schneller. Ich hatte nur ungefähr 10.000 Dinge und profilierte sowohl 'map' als auch' unordered_map'. – GManNickG
Ich würde erwarten "viele eingebaute Funktionen" << 10.000. Hasmap im OP-Fall hat den klaren Vorteil, "wahres O (1)" zu sein, da es nicht wachsen muss und ein kollisionsfreier Hash für die Strings konstruiert werden könnte. Ich bezweifle, dass es einen * signifikanten * Unterschied gegenüber einer "Karte" für sogar ein paar 100 Elemente macht. – peterchen