Interne Variablen per Adresse überschreiben
Übersicht

![]() |
klinBetreff: Interne Variablen per Adresse überschreiben |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo leute,
ich bin dabei eine Skript sprache zu machen die sich kompilieren lässt. Soweit sogut, denn ich arbeite auch schon seit einer Woche daran. Aber leider habe ich es mit den Variablen schlecht geregelt: Alles in eriner Liste und per For durchlaufen lassen >.o Das blöde dabei ist, dass es nach ca. 100 Variablen ein wenig langsamer wird... Und somit kam ich auf eine Idee! Ich kenne das von C++ (Detour), dass man per Adresse die Variable Klonen kann (A = *Adresse oder so..) und dann überschreiben kann. Das würde mir zumindest eine For schleife ersparen. Die Adressen kann ich ja bei dem Laden des Skriptes einsetzen. Allerdings, weiß ich leider nicht wie man das tut... Ich weiß zwar wie man diese hausbekommt, aber leider nicht wie man diese auch setzen kann ![]() Hat da jemand eine Lösung? THX MFG Klin |
||
BBPro2 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
anderer vorschlag:
sortiere die variablennamen nach dem alphabet und führe binäre suche auf die liste aus das vermindert die laufzeit von O(n) auf O(log n) - ist also erst bei 2^100 variablen so "langsam" wie zur zeit bei 100 |
||
![]() |
BtbN |
![]() Antworten mit Zitat ![]() |
---|---|---|
Nur das der Grundaufwand so viel höher wird, dass er vermutlich für 10 variablen so lange braucht wie jetzt für 1000.
Verstehe eh den Sinn der Liste nicht so ganz. Wie weit wird das denn kompiliert? Und warum die vars nicht einfach nummerieren, und nen Array nehmen? |
||
BBPro2 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
das kommt ganz drauf an wie sein bisheriger code aufgebaut ist btbn und muss absolut nicht zwangsläufig so sein...
ich bezweifle stark, dass er für 10 vars so lange bräuchte wie jetzt für 1000^^ der aufwand muss wenn der code bisher vernünftig ist überhaupt nicht steigen... alles was er "mehr" machen muss ist das alphabetische einordnen der neuen variable beim erstellen. das hat auch ne laufzeit von O (log n) ich seh also nich ganz wo das problem sein soll... |
||
![]() |
mpmxyz |
![]() Antworten mit Zitat ![]() |
---|---|---|
klin, ordnest du Strings Variablen zu?
Dann kannst du direkt TMap-Objekte nutzen. Bei diesen braucht auch das Einsortieren nur O(log(n)). Hier mal eine kleine Liste, wie man sie verwendet: Code: [AUSKLAPPEN] Erstellen: map:TMap=New TMap
Einfügen: map.Insert(schluessel,wert) Wert bestimmen: wert=map.ValueForKey(schluessel) Wert löschen: map.Remove(schluessel) Map leeren: map.Clear() mfG mpmxyz PS: Man kann übrigens in einer "Map" jeder Art von Objekten Objekte zuordnen. PPS: Pointer auf Variablen bekommt man mit "Varptr". Pointer werden mit "Ptr" gekennzeichnet. (z.B. "Int Ptr") |
||
Moin Moin!
Projekte: DBPC CodeCruncher Mandelbrot-Renderer |
![]() |
klin |
![]() Antworten mit Zitat ![]() |
---|---|---|
Vielen Dank an alle! Ich werde mal die TMap methode ausprobieren.
BtbN: Ich habe das Skript in einer ->ART<- "Assembler" code umgewandelt. Somit muss das Programm nur Die befehle durchlaufen lassen und benötigt kaum IF/find(instr) abfragen usw. Das macht es natürlich um einiges schneller! momentan hatte ich ~2000 FPS. Nun sind es aber bei 100 Variablen ~1000 FPS ![]() ![]() THX MFG Klin |
||
Macintosh |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
öhm du misst dein script in fps? ich würde es eher in millisec angeben, bzw. messen wie viele msec ein befehl braucht, oder dans ganze script braucht.
Zum Thema: Ich denke auch das TMap hier wohl das beste ist. |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group