Performance erhöhen?
-
bisher brauchte ich sie nicht. bzw ich verschlüssel sie in der funktionsnummer.
was ich damit meine?
push 5 push 5.0 push "Hallo"
die erste funktion bekommt die nr 0x04, die 2. 0x05 und die 3. 0x06.
0x04 erwartet nur int
0x05 nur float
0x06 nur strings(dh einen längenint und dann ein paar chars ;))im ersten moment klingt das nach viel arbeit, aber wenn man bedenkt, dass ausser push eigentlich alle funktionen mit stackaddressen(der stack ist ein vector der die objekte polymorph speichert) arbeiten, ist das doch noch relativ einfach zu handhaben.
-
LOL hat sich ja ma ne Lustige Diskussion raus entwickelt ... naja mein Interpreter ist kein ByteCode-Interpreter sondern sowas wie VBScript, halt ein direkter Interpreter für darin geschrieben Scripts.
Aber schneller geworden isser immer noch nicht
ich glaube das Problem liegt ganz einfach daran, dass das Ding sehr lahm wird sobald man ein Script laufen lässt, das wirklich alle Funktionen braucht ... also Lesen, Interpretieren, Variablen holen, Variablen schreiben, bla, blub... kann man halt nicht "mal eben" dahin erklären.Gruss,
~code_pilot
-
Theorie:
Direkte Interpreter sind langsam.
-
THeorie: die Theorie ist richtig.
strings sind LAAAAHM ;)**im gegensatz zu anderen techniken die hier angewand werden könnten.
-
code_pilot schrieb:
ich glaube das Problem liegt ganz einfach daran, dass das Ding sehr lahm wird sobald man ein Script laufen lässt, das wirklich alle Funktionen braucht ... also Lesen, Interpretieren, Variablen holen, Variablen schreiben, bla, blub... kann man halt nicht "mal eben" dahin erklären.
Und was spricht gegen kompilieren? kannst es ja ala PHP beim starten kompilieren - und hast im endeffekt einen interpreter und hast dennoch eine annehmbare geschwindigkeit. ein jitter wäre natürlich das beste - allerdings auch das komplexeste.
-
wie funktioniert denn ein jiter mal kurz umrissen? *zu müde zum googlen*
-
otze schrieb:
wie funktioniert denn ein jiter mal kurz umrissen? *zu müde zum googlen*
er kompiliert während der ausführung des programmes - kann dadurch natürlich geniale optimierungen machen, weil er ja genau die input daten kennt.
-
aber dauert kompilieren bei groß projekten nicht teilweise schon 4 stunden?(bei normalen compilern)
wie kriegt man das in echtzeit hin?
-
Er compiliert ja nicht mehr direkt von der Hochsprache, sondern von einer Assembler-ähnlichen Zwischensprache aus.
Der Gag ist, dass diese Sprache aber noch prozessorunabhängig ist und der JIT-Compiler je nach gerade vorhandenem Prozessortyp entsprechende Optimierungen einbauen kann. Trotzdem fehlt ihm natürlich die praktisch unbegrenzte Zeit statischer Compiler ein bisschen.
Da diese Technologie aber noch in Entwicklung ist (insbesondere von Sun's HotSpot Optimierung kann man noch einiges erwarten), hat sie ihr volles Potenzial noch nicht entfaltet, für die statischen Compiler gilt natürlich das selbe, auch wenn man da schon mehr Erfahrung hat.
-
Ach, und bei .Net wird das Problem recht elegant umgangen, indem Native Images abgelegt werden, die auch nach dem Shutdown des Systems noch vorhanden sind. Somit wird das Programm nur beim ersten Aufruf wirklich compiliert, allerdings ist es trotzdem noch möglich, dynamisch Klassen hinzuzuladen.