Schnellere Lösung für LUA, wie?

Übersicht BlitzMax, BlitzMax NG Allgemein

Neue Antwort erstellen

Suco-X

Betreff: Schnellere Lösung für LUA, wie?

BeitragSo, Aug 14, 2005 10:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi
Ich habe mich mal wieder entschlossen ein wenig mit dem LUA Modul zu arbeiten und habe mir so meine Gedanken über die Verwendung gemacht. Ich dachte z.b. man könnte so einzelne Spielelemente auslagern, wie z.b. Feinde (Bewegungen und Schüsse usw.). Man müsste also erst alle Scripte Laden, den gewünschten Objekten hinzufügen und in der Hauptschleife führt jedes dieser Objekte das Script.
Jetzt hat mich aber der erste Speedtest etwas erschrocken:


Code: [AUSKLAPPEN]

Import Pub.LuaScript

Global LuaScr:ScriptEngine = New ScriptEngine


Function Debug(ls:Byte Ptr)
        Local Text:String = LuaScr.CheckString(ls,1)
      'print Text
End Function


LuaScr.AddFunction(Debug, "print2")



'LuaScr.SetScriptText("print2(~qTest~q)", "")


Local time:Int = MilliSecs()

For Local i:Int = 0 Until 1000
   LuaScr.SetScriptText("print2(~qTest~q)", "")
   LuaScr.RunScript()
Next

Print MilliSecs()-time

LuaScr.ShutDown()



Das Script ist ja sehr klein und braucht schon soo lange, wie soll man das gebrauchen können?
Desweiteren muss man immer den Text beifügen bevor man es ausführt, ich denke das ist das Problem.
Ich will Beispielsweise ein Script Laden, LUA soll es für sich Vorbereiten und bei Aufruf einfach abspielen, ohne nochmal den Text hinzufügen zu müssen. Habe aber ka wie das gehen könnte, finde dazu keine Funktionen.
Vielleicht weiss ja jemand Rat..
Mfg Suco
Intel Core 2 Quad Q8300, 4× 2500 MHz, 4096 MB DDR2-Ram, GeForce 9600GT 512 MB

Suco-X

Betreff: ........

BeitragSo, Aug 14, 2005 10:47
Antworten mit Zitat
Benutzer-Profile anzeigen
So, ich bin ein Stück weitergekommen:

Mit diesem

Code: [AUSKLAPPEN]

Import Pub.LuaScript

Global LuaScr:ScriptEngine = New ScriptEngine


Function Debug(ls:Byte Ptr)
        Local Text:String = LuaScr.CheckString(ls,1)
      'Print Text
End Function


LuaScr.AddFunction(Debug, "print2")


LuaScr.SetScriptText("print2(~qTest~q)", "test")
lua_setglobal(LuaScr.m_lua_state, "test")


Local time:Int = MilliSecs()

For Local i:Int = 0 Until 1000
   lua_getglobal(LuaScr.m_lua_state, "test")
   LuaScr.RunScript()
Next

Print MilliSecs()-time

LuaScr.ShutDown()


geht das ganze schon viel flotter. Ich hoffe nur es gibt noch ne Möglichkeit das ganze nochmals zu beschleunigen.
Mfg Suco
Intel Core 2 Quad Q8300, 4× 2500 MHz, 4096 MB DDR2-Ram, GeForce 9600GT 512 MB

TheShadow

Moderator

BeitragSo, Aug 14, 2005 11:19
Antworten mit Zitat
Benutzer-Profile anzeigen
eine DLL ist denke ich mal am schnellsten - Vorteil ist auch, dass es auch dritte erweitern können
AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2

Suco-X

Betreff: ............

BeitragSo, Aug 14, 2005 11:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi
Eine DLL ist für meine Zwecke völlig ungeeignet, vielleicht wenn ich ein Plugin System machen will.
Mittlerweile habe ich mir den Code mal genauer angeschaut und die Script Engine etwas modifiziert, mit dem Ergebnis, dass er 1000 Durchläufe in 1 MS schafft und die ganze Sache nicht mehr Case Sensitive ist. Das reicht mir fürs erste, das Thema ist erstmal gegessen.
Mfg Suco
Intel Core 2 Quad Q8300, 4× 2500 MHz, 4096 MB DDR2-Ram, GeForce 9600GT 512 MB

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group