Einige Fragen zu BlitzMax

Übersicht BlitzMax, BlitzMax NG Allgemein

Gehe zu Seite Zurück  1, 2

Neue Antwort erstellen

AL90

BeitragSo, Jul 03, 2005 20:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:

@Suco-X

Flushmem brauchst du während Peek/Poke eigentlich nicht, würde es nur langsamer machen in einer Schleife.


Habe ich mir auch fast schon gedacht. Das wäre in der tat sehr
umständlich und würde den code nur unnötig vergrössern Smile

Nachtrag:

So jetzt habe ich mal TBank eingebracht.
Und es klappt tatsächlich, läuft jetzt viel schneller Very Happy
Danke nochmal für den Tip mit TBank an Suco-X & TheShadow. Wink

Allerdings habe ich jetzt ein neues problem. Ich kann Bänke jetzt nicht mehr freigeben.

Hier ein beispiel:

Local bnk:TBank=CreateBank(1024*1024)
Print MemAlloced()
Release bnk

Gibt immer den Fehler

"Subexpression for release must be an Integer variable"

aus. Was noch kurrios ist, ist das dies hier nicht funktioniert:

Local bnk
bnk:TBank=CreateBank(1024*1024)

gibt die Fehlermeldung:

"Identifier type does not match declared type"

aus. Irgendwelche vorschläge ?
Ciao
AL90

www.blitztools.de.vu

Suco-X

Betreff: .....

BeitragSo, Jul 03, 2005 22:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi
Zu 1:
Da du jetzt mit Objekten arbeitest funktioniert das Release nicht mehr.
Einfach bnk=null und beim nächsten flushmem() Aufruf wird das ganze dann freigegeben.


Zu 2:
Den Datentyp musst du beim definieren der Variable angeben. Also
Code: [AUSKLAPPEN]

local bnk:TBank
bnk = CreateBank(...)


Und um die größte Geschwindigkeit zu erreichen muss du alles auf OOP umstellen, nicht nur bnk:TBank. BlitzMax muss bei jedem Funktionsaufruf das ganze erstmal Intern verarbeiten und sich das passende Objekt rausfischen, das macht es bei 1000 en aufrufen so langsam.
Mfg Suco
Intel Core 2 Quad Q8300, 4× 2500 MHz, 4096 MB DDR2-Ram, GeForce 9600GT 512 MB

AL90

Betreff: Re: .....

BeitragMo, Jul 04, 2005 0:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Suco-X hat Folgendes geschrieben:
Hi
Zu 1:
Da du jetzt mit Objekten arbeitest funktioniert das Release nicht mehr.
Einfach bnk=null und beim nächsten flushmem() Aufruf wird das ganze dann freigegeben.


Hey cool. Hätte nicht gedacht daß das so geht. Werd ich gleich noch einbinden. Very Happy

Zitat:
Zu 2:
Den Datentyp musst du beim definieren der Variable angeben. Also
Code: [AUSKLAPPEN]

local bnk:TBank
bnk = CreateBank(...)


Auch hier wäre ich wohl nie drauf gekommen. Gut das es die Community gibt. Wink
Ich seh schon, BM hat viele unterschiede zu BB. Aber langsam kriege ich
gefallen daran. Ich werde mich mal weiter darin vertiefen.

Zitat:
Und um die größte Geschwindigkeit zu erreichen muss du alles auf OOP umstellen, nicht nur bnk:TBank. BlitzMax muss bei jedem Funktionsaufruf das ganze erstmal Intern verarbeiten und sich das passende Objekt rausfischen, das macht es bei 1000 en aufrufen so langsam.


Hab ich jetzt grösstenteils alles gemacht. Ausser mit CopyBank.
geht das überhaupt ? Ich habs nicht hinbekommen.

BTW:

Der speed ist jetzt auf PB niveau. (20MB File in 16 Sec. PB + BM)
Ciao
AL90

www.blitztools.de.vu
 

Dreamora

BeitragMo, Jul 04, 2005 0:42
Antworten mit Zitat
Benutzer-Profile anzeigen
CopyBank geht nur über den Befehl selbst. Davon gibt es keine OO Variante.

Alternativ kannst du aber auch direkt C Befehle nutzen sowie den OO Befehl um den Byte Ptr auf die Bank zu erhalten.

Code: [AUSKLAPPEN]

Strict

Local src:TBank = CreateBank (80)
Local dest:TBank = CreateBank (80)

src.pokeint (0,20)
src.pokeint (10,100)
Local offset1,offset2

Local t1:Int = MilliSecs ()
For Local i = 1 To 100000
   offset1   = Rand(0,60)
   offset2 = Rand(0,60)
   MemCopy dest.buf()+offset1,src.buf()+offset2,20
Next
t1 = MilliSecs () - t1

Local t2:Int = MilliSecs ()
For Local i = 1 To 100000
   offset1   = Rand(0,60)
   offset2 = Rand(0,60)
   CopyBank (src,offset1,dest,offset2,20)
Next
t2 = MilliSecs () - t2

Print dest.peekint(0)
Print dest.peekint(10)

Print "T1: " + t1 + " T2: " + t2



Wie man sieht scheint es auch schneller zu sein als die interne routine ...
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

AL90

BeitragMo, Jul 04, 2005 1:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Hab jetzt alle CopyBanks durch MemCopy ersetzt. Kein unterschied
gegenüber mit CopyBank. Vielleicht ist auch nicht mehr rauszuholen,
da ich die routinen unter BB schon sehr oft optimiert hatte.
Ciao
AL90

www.blitztools.de.vu
 

Dreamora

BeitragMo, Jul 04, 2005 2:17
Antworten mit Zitat
Benutzer-Profile anzeigen
hmm
bei mir isses im Schnitt 10-15% schneller (habe oberes mit noch grösseren Loops durchtesten lassen rund 40x)

Vielleicht ein P-M Vorteil ...
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

AL90

BeitragMo, Jul 04, 2005 17:53
Antworten mit Zitat
Benutzer-Profile anzeigen
So ich glaube ich weis jetzt auch warum es bei mir keinen Performance-
schub bringt. Der grund dafür ist ganz einfach der, das die CopyBanks
nicht in zeitintensiven Routinen stecken. Das fiel mir zunächst nicht so
auf, dürfte aber der grund dafür sein. Da CopyBank in diesem fall dann
auch nicht mehr viel langsamer ist als MemCopy.
Ciao
AL90

www.blitztools.de.vu

Gehe zu Seite Zurück  1, 2

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group