Einige Fragen zu BlitzMax
Übersicht

![]() |
AL90 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 ![]() Nachtrag: So jetzt habe ich mal TBank eingebracht. Und es klappt tatsächlich, läuft jetzt viel schneller ![]() Danke nochmal für den Tip mit TBank an Suco-X & TheShadow. ![]() 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-XBetreff: ..... |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() |
AL90Betreff: Re: ..... |
![]() Antworten mit Zitat ![]() |
---|---|---|
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. ![]() 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. ![]() 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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group