Code Optimierung???
Übersicht

![]() |
AL90Betreff: Code Optimierung??? |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo,
Hat jemand ne idee wie man folgenden Code noch optimieren könnte? Bin für jeden Tipp dankbar. ![]() Code: [AUSKLAPPEN] Function CompareMemory(bank1,offset1,bank2,offset2,length) result=1 If length=2 If PeekShort(bank1,offset1)=PeekShort(bank2,offset2) Then Return result Else For i=0 To length-1 Step 4 a=PeekInt(bank1,offset1+i) b=PeekInt(bank2,offset2+i) If a<>b Then result=0:Exit Next EndIf Return result End Function |
||
Ciao
AL90 www.blitztools.de.vu |
![]() |
Artemis |
![]() Antworten mit Zitat ![]() |
---|---|---|
Vielleicht so:
Code: [AUSKLAPPEN] Function CompareMemory(bank1,offset1,bank2,offset2,length)
If length=2 If PeekShort(bank1,offset1)=PeekShort(bank2,offset2) Then Return 1 Else For i=0 To length-1 Step 4 a=PeekInt(bank1,offset1+i) b=PeekInt(bank2,offset2+i) If a<>b Then Return 0 Next EndIf Return 1 End Function Du hast dann keine zusätzliche variable mehr. und das exit aus der schleife entfällft. |
||
![]() |
Jan_Ehemaliger Admin |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich gehe mal von Geschwindigkeits optimierung aus,
BlitzBasic: [AUSKLAPPEN]
Also, aufm p3 600 MHZ, 382 mb sdram schafft das ding jetzt 27 mb pro Bank in 1ner Sekunde zu vergleichen. ... Ich denke doch, das reicht aus. |
||
between angels and insects |
- Zuletzt bearbeitet von Jan_ am Di, Okt 04, 2005 11:33, insgesamt einmal bearbeitet
Klaas |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
aber müßte nicht i hinter dem Vergleich inkrementiert werden
Code: [AUSKLAPPEN] Function CompareMemory(bank1,offset1,bank2,offset2,length) Repeat If PeekInt(bank1,offset1+i)=PeekInt(bank2,offset2+i) Else Return 0 i=i+4 ; <-- besser hier Until i> length Return 1 End Function |
||
![]() |
Jan_Ehemaliger Admin |
![]() Antworten mit Zitat ![]() |
---|---|---|
ja, sorry für den kleinen Logic fehler, Quelltext oben berichtigt. | ||
between angels and insects |
![]() |
AL90 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo Leute,
Erstmal Danke für die zahlreichen tips. ![]() Ich werde sie mal für mein vorhaben ausprobieren und dann melde ich mich wieder und gebe mal bescheid um wieviel die codes schneller sind. |
||
Ciao
AL90 www.blitztools.de.vu |
![]() |
AL90 |
![]() Antworten mit Zitat ![]() |
---|---|---|
So hab jetzt mal den test gemacht. Ergebnis: Leider waren sie
nur geringfügig schneller, weshalb ich also erstmal bei meiner alten routine bleibe. Nochmals Danke für Eure versuche. ![]() |
||
Ciao
AL90 www.blitztools.de.vu |
![]() |
Jan_Ehemaliger Admin |
![]() Antworten mit Zitat ![]() |
---|---|---|
ja, viel zu optimieren geht da nciht. | ||
between angels and insects |
Klaas |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hab jetzt eine schnellere Varianten gefunden über die zlib.dll
Die schafft auf meinem Rechner 3.2 zu 5.2 mit der alten Funktion Vorteil der alten Funktion das wenn sehr früh eine Ungleicheit auftritt wird diese sehr viel schneller. Muß man sich fragen wie häufig das auftritt! Zudem muß man sagen das die wahrscheinlichkeit 2 gleiche Checksummen bei unterschiedlichen Banks zu bekommen sehr niedrig ist aber doch vorhanden. da findest du die userlib und die Funktionen: http://www.blitzbasic.com/code...p?code=962 hier findest du die dll: http://www.winimage.com/zLibDll/ Code: [AUSKLAPPEN] Function CompareMemory(bank1,offset1,bank2,offset2,length) adler1 = gzip_adler32bank(bank1) adler2 = gzip_adler32bank(bank2) If adler1 = adler2 Then Return True Return False einziges Problem: man kann nicht nur Teile der Banks vergleichen und ein zerschneiden der Bank währe wohl sehr viel langsamer! |
||
![]() |
AL90 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Speedmäßig sieht das sehr interessannt aus. Nur leider kann ich das
nicht einsetzen da meine CrunchEngine sonst von externen Dateien abhängig wäre. Und genau das ist es was ich eigentlich vermeiden wollte. Auch das "Fehl-auffinden" von gleichheiten könnte zum problem werden. (Grössere Packergebnisse) Hashtables sind für mein vorhaben unumgänglich, aber es müsste schon was sein das wirklich korrekte werte liefert. Ich dachte der eine oder andere hätte vielleicht doch 'nen "blitzgedanken" was ich evtl. übersehen haben könnte. Aber ich glaube ich muss einsehen das es mit reinen BB-Befehlen wohl oder übel doch nicht geht. Nochmals Danke an alle beteiligten für die Optimierungs-versuche und Tipps. ![]() |
||
Ciao
AL90 www.blitztools.de.vu |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group