Magic Numbers automatisch generieren
-
du könntest dir die werte in eine datei schreiben
und das array folgendermassen initialisieren//Datei mit den Ergebnissen.txt 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 125, 325, 2, 6 usw...int ergebnisse[] = { #include "Datei mit Ergebnissen.txt" };dann haste deine ergebnisse in deinem array
vorteil: du musst nicht viel schreiben und es ist eig garantiert dass die werte da so drinstehen
nachteil: dein code wird grösser und deine compilezeit wird auhc länger...
-
ob sich das mit templates realisieren laesst weiss ich persoenlich nicht, koennte mir aber vorstellen dass das relativ unduebersichtlich wird je nach komplexitaet der formel.
was an deinem jetzigen prozess aber auf jeden fall optimierbar ist: du koenntest dir ein skript schreiben welches eine header-datei generiert in welcher die magic numbers stehen, und sofern du mit makefiles arbeitest kannst du den aufruf dieses skriptes in den buildprozess einbinden.
-
Ich verstehe nicht ganz, wieso du die Funktion zur Berechnung der Werte nicht direkt in dein Hauptprogramm packst...? Kannst du das mal näher erläutern?
Möglich wäre das schon, aber warum die Startzeit des Programms verlängern wenn es sich eh nur um konstante Werte handelt, die dann jedes mal aufs neue berechnet werden?
Mach doch einfach eine Datei, die du einliest.
Ja, kann ich machen, das würde das Copy&Paste ersparen, aber ein zweites Programm wäre dann trotzdem noch nötig und wenn man sich dann nur diese Datei anschaut, wüßte man nicht woher diese Zahlen stammen was in meinen Augen fehleranfälliger ist.
Im Prinzip suche ich etwas, wo die Zahlen "im Hintergrund" erstellt werden, so dass auf der einen Seite nachvollziehbar ist woher diese Zahlen stammen und auf der anderen Seite die Zahlen aber trotzdem schon vorberechnet sind.
was an deinem jetzigen prozess aber auf jeden fall optimierbar ist: du koenntest dir ein skript schreiben welches eine header-datei generiert in welcher die magic numbers stehen, und sofern du mit makefiles arbeitest kannst du den aufruf dieses skriptes in den buildprozess einbinden.
Ja, ich denke so werde ich das machen. Ich dachte nur, dass es vielleicht auch eine C++ spezifische Möglichkeit gebe, dies frühzeitig im Build-Prozess zu machen.
-
ZzetT schrieb:
Ich dachte nur, dass es vielleicht auch eine C++ spezifische Möglichkeit gebe, dies frühzeitig im Build-Prozess zu machen.
Mit Template-Metaprogrammierung kannst du Zahlen zur Compilezeit berechnen. Das ist aber nicht ganz trivial...

-
Nexus schrieb:
ZzetT schrieb:
Ich dachte nur, dass es vielleicht auch eine C++ spezifische Möglichkeit gebe, dies frühzeitig im Build-Prozess zu machen.
Mit Template-Metaprogrammierung kannst du Zahlen zur Compilezeit berechnen. Das ist aber nicht ganz trivial...

Hast du diesbezüglich dennoch ein kleine Beispiel für mich?
-
Guck mal hier... Da kannst du dir anschauen wie man dass mit den Fibonacci Zahlen mit nem Metaprogramm macht...
-
Hmm. Ich weiss jetzt nicht genau, was du willst. Und wie gesagt ist die Thematik nicht ganz einfach, ich kenne mich selber auch nicht wahnsinnig gut mit Metaprogrammierung aus.
Vielleicht reicht es, wenn du den Artikel auf Wikipedia liest, da ist auch ein Beispiel für die Potenzfunktion zur Compilezeit vorhanden. Ansonsten wären vielleicht Bücher angebracht. Für komplexere Dinge gibts auch noch Boost.MPL.
Wie sollen denn die Werte berechnet werden? Steckt eine komplexe Funktion dahinter? Je nachdem ist der Aufwand für eine Compilezeit-Lösung (inklusive Einlesen in die Thematik) nicht gerechtfertigt...
-
Nexus schrieb:
ZzetT schrieb:
Ich dachte nur, dass es vielleicht auch eine C++ spezifische Möglichkeit gebe, dies frühzeitig im Build-Prozess zu machen.
Mit Template-Metaprogrammierung kannst du Zahlen zur Compilezeit berechnen. Das ist aber nicht ganz trivial...

Zufallszahlen gibt es aber denn auch auch keine.

Man könnte aber selbst einen Zufallgenerator mit Metaprogrammierung programmieren. Das ist aber imo den Aufwand nicht Wert und man nimmt lieber die schon vorgeschlagenen Lösungen.

-
drakon schrieb:
Zufallszahlen gibt es aber denn auch auch keine.

Er will ja keine Zufallszahlen, sondern vorberechnete Werte, wenn ich ihn richtig verstanden habe.
Einen Zufallsgenerator in Template-Metaprogrammierung habe ich mir auch überlegt. Wenn ich mal nichts zu tun habe, könnte ich sowas selber probieren...

(Schlimm wirds erst bei einem in Präprozessor-Metaprogrammierung :D)
-
Nexus schrieb:
drakon schrieb:
Zufallszahlen gibt es aber denn auch auch keine.

Er will ja keine Zufallszahlen, sondern vorberechnete Werte, wenn ich ihn richtig verstanden habe.
Stimmt. Habe die Magic Numbers falsch im Kopf.

Zu Testzwecken kann das sicher noch ganz was feines sein das bereits zu Kompilierzeit generieren zu lassen, aber konfortablen und einfach sicher nicht.
Und im übrigen möchte ich dann nicht der sein, der das Kompilieren muss. :p