Bankoptimierung
Übersicht

MatheBetreff: Bankoptimierung |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo,
ich wollt mal fragen ob sich diese Function noch ein wenig optimieren läst da, die Geschwindigkeit im Gegensatz zu normalen Dim Variablen nicht gerade hoch ist? Code: [AUSKLAPPEN] Global xStringBank = CreateBank(0), xIntegerBank = CreateBank(0), xFloatBank = CreateBank(0)
Global xStringBankSize%, xIntegerBankSize%, xFloatBankSize% Function BankString$(xString$) Local xStrL% = Len(xString) Local xStrTemp% = xStringBankSize ResizeBank xStringBank, xStringBankSize+xStrL xStringBankSize = xStringBankSize + xStrL For x = xStrTemp To xStringBankSize-1 y = y + 1 PokeByte xStringBank,x, Asc(Mid(xString,y,1)) Next Return xStrTemp + "|"+xStrL End Function Function ReadBankString$(BankPosition$) Local Begrenzung% = Instr(BankPosition,"|",1) Local xStrStart% = Int(Mid(BankPosition,1,Begrenzung-1)) Local xStrLeng% = Int(Mid(BankPosition,Begrenzung+1,-1)) Local xWort$ For x = xStrStart To (xStrStart+xStrLeng)-1 xWort = xWort + Str(Chr(PeekByte (xStringBank,x))) Next Return xWort End Function Beispiel: Code: [AUSKLAPPEN] Graphics 800,600,32,2
SetBuffer BackBuffer() ;Include Include "MakeITNew.bb" time = MilliSecs() For x = 1 To 10000 b$ = BankString("Der Prozessorhersteller AMD wird nach einer Meldung von TweakTown bereits in der nächsten Woche ein neues Spitzenmodell präsentieren – den Phenom II X4 965. Entsprechend der Modellnummer wird die neue CPU mit einem Takt von 3,4 GHz erscheinen.") ;ReadBankString(b) Next Endtime = MilliSecs() Print "BankSize: " + BankSize(xStringBank) + " | BankTime: " + (endtime-time) time = MilliSecs() Dim St$(10000) For x = 1 To 10000 St(x) = "Der Prozessorhersteller AMD wird nach einer Meldung von TweakTown bereits in der nächsten Woche ein neues Spitzenmodell präsentieren – den Phenom II X4 965. Entsprechend der Modellnummer wird die neue CPU mit einem Takt von 3,4 GHz erscheinen." Next endtime = MilliSecs() Print "DimTime: " + (endtime-time) Delay 100 Print "Fertigstellen. Bitte eine Taste drücken" Flip WaitKey |
||
Windoof nein DANKE => ArchLinux ![]() |
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du kannst es optimieren indem du ein Type erstellst welches nur ein einziges String-Field hat und dessen ID dann in einer Bank (falls unbedingt notwendig) speicherst. Das Handle einer ID bekommst du über Handle![]() |
||
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D |
Mathe |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
hmmmm.... eigentlich wollt ich ja ein Type Array erweitern, damit in einer Array auch Float, Ints und StringVariablen vorkommen können, ist das der Aufwand eigentlich wert?
Edit: @hectic Dank deinen Vorschlag braucht meine Bank-Function nur noch 37ms bei 10.000 Einträgen ein DimFeld mit 10.000 Einträgen brauch 14ms. |
||
Windoof nein DANKE => ArchLinux ![]() |
![]() |
hazumu-kun |
![]() Antworten mit Zitat ![]() |
---|---|---|
Mathe hat Folgendes geschrieben: hmmmm.... eigentlich wollt ich ja ein Type Array erweitern, damit in einer Array auch Float, Ints und StringVariablen vorkommen können, ist das der Aufwand eigentlich wert?
... Ist das den Aufwand wert? Frag nicht uns. Wofür brauchst du diese 'Speicher-Management'-Engine eigentlich?? Wenndu keine wikrliche Verwendung dafür hast würd ich nicht soviel Energie reinstecken. Gruß VikenEmesh |
||
Warum kann es keine omnipotente Macht geben?
Weil diese omnipotente Macht in der Lage sein müsste, einen so schweren Stein zu schaffen, dass sie ihn nicht heben kann -> nicht omnipotent |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group