PS: Sieh hier noch jemand Optimierungspotetial? Bei mir braucht PB um die Checksumme von 1GB Memory zu bilden 3000 ms, mein Code >15000 ms, also 5x so lange. Hatt einer ne Idee was ich noch optimieren könnte?
Code: Alles auswählen
Structure CRC32_Table
*Entry.l[0]
EndStructure
; Genau wie CRC32Fingerprint()
Procedure CRC32_Mem(*Mem.Byte, MemSize)
Protected crc32Result.l = $FFFFFFFF
Protected *Table.CRC32_Table = ?_CRC_Table
While MemSize
crc32Result = (((crc32Result & $FFFFFF00)/$100) & $FFFFFF) ! *Table\Entry[(crc32Result & $FF) ! *Mem\b]
*Mem + 1
MemSize-1
Wend
ProcedureReturn ~crc32Result
EndProcedure
;{ CRC Data
DataSection
_CRC_Table:
Data.l 0
Data.l $0000000077073096, $FFFFFFFFEE0E612C, $FFFFFFFF990951BA, $00000000076DC419, $00000000706AF48F
Data.l $FFFFFFFFE963A535, $FFFFFFFF9E6495A3, $000000000EDB8832, $0000000079DCB8A4, $FFFFFFFFE0D5E91E
Data.l $FFFFFFFF97D2D988, $0000000009B64C2B, $000000007EB17CBD, $FFFFFFFFE7B82D07, $FFFFFFFF90BF1D91
Data.l $000000001DB71064, $000000006AB020F2, $FFFFFFFFF3B97148, $FFFFFFFF84BE41DE, $000000001ADAD47D
Data.l $000000006DDDE4EB, $FFFFFFFFF4D4B551, $FFFFFFFF83D385C7, $00000000136C9856, $00000000646BA8C0
Data.l $FFFFFFFFFD62F97A, $FFFFFFFF8A65C9EC, $0000000014015C4F, $0000000063066CD9, $FFFFFFFFFA0F3D63
Data.l $FFFFFFFF8D080DF5, $000000003B6E20C8, $000000004C69105E, $FFFFFFFFD56041E4, $FFFFFFFFA2677172
Data.l $000000003C03E4D1, $000000004B04D447, $FFFFFFFFD20D85FD, $FFFFFFFFA50AB56B, $0000000035B5A8FA
Data.l $0000000042B2986C, $FFFFFFFFDBBBC9D6, $FFFFFFFFACBCF940, $0000000032D86CE3, $0000000045DF5C75
Data.l $FFFFFFFFDCD60DCF, $FFFFFFFFABD13D59, $0000000026D930AC, $0000000051DE003A, $FFFFFFFFC8D75180
Data.l $FFFFFFFFBFD06116, $0000000021B4F4B5, $0000000056B3C423, $FFFFFFFFCFBA9599, $FFFFFFFFB8BDA50F
Data.l $000000002802B89E, $000000005F058808, $FFFFFFFFC60CD9B2, $FFFFFFFFB10BE924, $000000002F6F7C87
Data.l $0000000058684C11, $FFFFFFFFC1611DAB, $FFFFFFFFB6662D3D, $0000000076DC4190, $0000000001DB7106
Data.l $FFFFFFFF98D220BC, $FFFFFFFFEFD5102A, $0000000071B18589, $0000000006B6B51F, $FFFFFFFF9FBFE4A5
Data.l $FFFFFFFFE8B8D433, $000000007807C9A2, $000000000F00F934, $FFFFFFFF9609A88E, $FFFFFFFFE10E9818
Data.l $000000007F6A0DBB, $00000000086D3D2D, $FFFFFFFF91646C97, $FFFFFFFFE6635C01, $000000006B6B51F4
Data.l $000000001C6C6162, $FFFFFFFF856530D8, $FFFFFFFFF262004E, $000000006C0695ED, $000000001B01A57B
Data.l $FFFFFFFF8208F4C1, $FFFFFFFFF50FC457, $0000000065B0D9C6, $0000000012B7E950, $FFFFFFFF8BBEB8EA
Data.l $FFFFFFFFFCB9887C, $0000000062DD1DDF, $0000000015DA2D49, $FFFFFFFF8CD37CF3, $FFFFFFFFFBD44C65
Data.l $000000004DB26158, $000000003AB551CE, $FFFFFFFFA3BC0074, $FFFFFFFFD4BB30E2, $000000004ADFA541
Data.l $000000003DD895D7, $FFFFFFFFA4D1C46D, $FFFFFFFFD3D6F4FB, $000000004369E96A, $00000000346ED9FC
Data.l $FFFFFFFFAD678846, $FFFFFFFFDA60B8D0, $0000000044042D73, $0000000033031DE5, $FFFFFFFFAA0A4C5F
Data.l $FFFFFFFFDD0D7CC9, $000000005005713C, $00000000270241AA, $FFFFFFFFBE0B1010, $FFFFFFFFC90C2086
Data.l $000000005768B525, $00000000206F85B3, $FFFFFFFFB966D409, $FFFFFFFFCE61E49F, $000000005EDEF90E
Data.l $0000000029D9C998, $FFFFFFFFB0D09822, $FFFFFFFFC7D7A8B4, $0000000059B33D17, $000000002EB40D81
Data.l $FFFFFFFFB7BD5C3B, $FFFFFFFFC0BA6CAD, $FFFFFFFFEDB88320, $FFFFFFFF9ABFB3B6, $0000000003B6E20C
Data.l $0000000074B1D29A, $FFFFFFFFEAD54739, $FFFFFFFF9DD277AF, $0000000004DB2615, $0000000073DC1683
Data.l $FFFFFFFFE3630B12, $FFFFFFFF94643B84, $000000000D6D6A3E, $000000007A6A5AA8, $FFFFFFFFE40ECF0B
Data.l $FFFFFFFF9309FF9D, $000000000A00AE27, $000000007D079EB1, $FFFFFFFFF00F9344, $FFFFFFFF8708A3D2
Data.l $000000001E01F268, $000000006906C2FE, $FFFFFFFFF762575D, $FFFFFFFF806567CB, $00000000196C3671
Data.l $000000006E6B06E7, $FFFFFFFFFED41B76, $FFFFFFFF89D32BE0, $0000000010DA7A5A, $0000000067DD4ACC
Data.l $FFFFFFFFF9B9DF6F, $FFFFFFFF8EBEEFF9, $0000000017B7BE43, $0000000060B08ED5, $FFFFFFFFD6D6A3E8
Data.l $FFFFFFFFA1D1937E, $0000000038D8C2C4, $000000004FDFF252, $FFFFFFFFD1BB67F1, $FFFFFFFFA6BC5767
Data.l $000000003FB506DD, $0000000048B2364B, $FFFFFFFFD80D2BDA, $FFFFFFFFAF0A1B4C, $0000000036034AF6
Data.l $0000000041047A60, $FFFFFFFFDF60EFC3, $FFFFFFFFA867DF55, $00000000316E8EEF, $000000004669BE79
Data.l $FFFFFFFFCB61B38C, $FFFFFFFFBC66831A, $00000000256FD2A0, $000000005268E236, $FFFFFFFFCC0C7795
Data.l $FFFFFFFFBB0B4703, $00000000220216B9, $000000005505262F, $FFFFFFFFC5BA3BBE, $FFFFFFFFB2BD0B28
Data.l $000000002BB45A92, $000000005CB36A04, $FFFFFFFFC2D7FFA7, $FFFFFFFFB5D0CF31, $000000002CD99E8B
Data.l $000000005BDEAE1D, $FFFFFFFF9B64C2B0, $FFFFFFFFEC63F226, $00000000756AA39C, $00000000026D930A
Data.l $FFFFFFFF9C0906A9, $FFFFFFFFEB0E363F, $0000000072076785, $0000000005005713, $FFFFFFFF95BF4A82
Data.l $FFFFFFFFE2B87A14, $000000007BB12BAE, $000000000CB61B38, $FFFFFFFF92D28E9B, $FFFFFFFFE5D5BE0D
Data.l $000000007CDCEFB7, $000000000BDBDF21, $FFFFFFFF86D3D2D4, $FFFFFFFFF1D4E242, $0000000068DDB3F8
Data.l $000000001FDA836E, $FFFFFFFF81BE16CD, $FFFFFFFFF6B9265B, $000000006FB077E1, $0000000018B74777
Data.l $FFFFFFFF88085AE6, $FFFFFFFFFF0F6A70, $0000000066063BCA, $0000000011010B5C, $FFFFFFFF8F659EFF
Data.l $FFFFFFFFF862AE69, $00000000616BFFD3, $00000000166CCF45, $FFFFFFFFA00AE278, $FFFFFFFFD70DD2EE
Data.l $000000004E048354, $000000003903B3C2, $FFFFFFFFA7672661, $FFFFFFFFD06016F7, $000000004969474D
Data.l $000000003E6E77DB, $FFFFFFFFAED16A4A, $FFFFFFFFD9D65ADC, $0000000040DF0B66, $0000000037D83BF0
Data.l $FFFFFFFFA9BCAE53, $FFFFFFFFDEBB9EC5, $0000000047B2CF7F, $0000000030B5FFE9, $FFFFFFFFBDBDF21C
Data.l $FFFFFFFFCABAC28A, $0000000053B39330, $0000000024B4A3A6, $FFFFFFFFBAD03605, $FFFFFFFFCDD70693
Data.l $0000000054DE5729, $0000000023D967BF, $FFFFFFFFB3667A2E, $FFFFFFFFC4614AB8, $000000005D681B02
Data.l $000000002A6F2B94, $FFFFFFFFB40BBE37, $FFFFFFFFC30C8EA1, $000000005A05DF1B, $000000002D02EF8D
EndDataSection
;}