For everyone, here is a version with colors. I also added the poke/peek commands from the matrix1Util.
The fastest way is to use pointers:
ptr = make memory(4)
value = *ptr
But I don't know how to read single bytes, words and floats using them.
make memblock 1, 10240000
make memblock 2, 20480000
make memblock 3, 40960000
make memblock 4, 40960000
dim arrayb(10230000) as byte
dim arrayw(10230000) as word
dim arraydw(10230000) as dword
dim arrayf(10230000) as float
memb = alloc(10240000)
memw = alloc(20480000)
memdw = alloc(40960000)
memf = alloc(40960000)
`memblock test
time = timer()
for rep = 0 to 10229999
write memblock byte 1, rep, 255
next rep
mtime1 = timer() - time
time = timer()
for rep = 0 to 20479999 step 2
write memblock word 2, rep, 65535
next rep
mtime2 = timer() - time
time = timer()
for rep = 0 to 40959999 step 4
write memblock dword 3, rep, 4294967294
next rep
mtime3 = timer() - time
time = timer()
for rep = 0 to 40959999 step 4
write memblock float 4, rep, 0.99999
next rep
mtime4 = timer() - time
`end memblock test
`array test
time = timer()
for rep = 0 to 10229999
arrayb(rep) = 255
next rep
atime1 = timer() - time
time = timer()
for rep = 0 to 10229999
arrayw(rep) = 65535
next rep
atime2 = timer() - time
time = timer()
for rep = 0 to 10229999
arraydw(rep) = 4294967294
next rep
atime3 = timer() - time
time = timer()
for rep = 0 to 10229999
arrayf(rep) = 0.99999
next rep
atime4 = timer() - time
`end array test
`memory test
time = timer()
pos = memb
for rep = 0 to 10229999
poke byte pos, 255
pos = pos + 1
next rep
memtime1 = timer() - time
time = timer()
pos = memw
for rep = 0 to 10229999
poke word pos, 65535
pos = pos + 2
next rep
memtime2 = timer() - time
time = timer()
pos = memdw
for rep = 0 to 10229999
poke dword pos, 4294967294
pos = pos + 4
next rep
memtime3 = timer() - time
time = timer()
pos = memf
for rep = 0 to 10229999
poke float pos, 0.99999
pos = pos + 4
next rep
memtime4 = timer() - time
`end memory test
read1 as byte
read2 as word
read3 as dword
read4 as float
`memblock test read
time = timer()
for rep = 0 to 10229999
read1 = (memblock byte(1, rep))
next rep
rmtime1 = timer() - time
time = timer()
for rep = 0 to 20479999 step 2
read2 = (memblock word(2, rep))
next rep
rmtime2 = timer() - time
time = timer()
for rep = 0 to 40959999 step 4
read3 = (memblock dword (3, rep))
next rep
rmtime3 = timer() - time
time = timer()
for rep = 0 to 40959999 step 4
read4 = (memblock float(4, rep))
next rep
rmtime4 = timer() - time
`end memblock test
`array test
time = timer()
for rep = 0 to 10229999
read1 = arrayb(rep)
next rep
ratime1 = timer() - time
time = timer()
for rep = 0 to 10229999
read2 = arrayw(rep)
next rep
ratime2 = timer() - time
time = timer()
for rep = 0 to 10229999
read3 = arraydw(rep)4
next rep
ratime3 = timer() - time
time = timer()
for rep = 0 to 10229999
read4 = arrayf(rep)
next rep
ratime4 = timer() - time
`end array test
`memory test
time = timer()
pos = memb
for rep = 0 to 10229999
read1 = peek byte(pos)
pos = pos + 1
next rep
rmemtime1 = timer() - time
time = timer()
pos = memw
for rep = 0 to 10229999
read2 = peek word(pos)
pos = pos + 2
next rep
rmemtime2 = timer() - time
time = timer()
pos = memdw
for rep = 0 to 10229999
read3 = peek dword(pos)
pos = pos + 4
next rep
rmemtime3 = timer() - time
time = timer()
pos = memf
for rep = 0 to 10229999
read4 = peek float(pos)
pos = pos + 4
next rep
rmemtime4 = timer() - time
`end memory test
print "Write test:"
printc "BYTE:"
if atime1 < mtime1 and atime1 < memtime1 then ink rgb(0, 255, 0)
if atime1 > mtime1 and atime1 > memtime1 then ink rgb(255, 0, 0)
printc " array: "+str$(atime1) : ink rgb(255, 255, 255)
if mtime1 < atime1 and mtime1 < memtime1 then ink rgb(0, 255, 0)
if mtime1 > atime1 and mtime1 > memtime1 then ink rgb(255, 0, 0)
printc " memblock: "+str$(mtime1) : ink rgb(255, 255, 255)
if memtime1 < atime1 and memtime1 < mtime1 then ink rgb(0, 255, 0)
if memtime1 > atime1 and memtime1 > mtime1 then ink rgb(255, 0, 0)
print " memory: "+str$(memtime1) : ink rgb(255, 255, 255)
printc "WORD:"
if atime2 < mtime2 and atime2 < memtime2 then ink rgb(0, 255, 0)
if atime2 > mtime2 and atime2 > memtime2 then ink rgb(255, 0, 0)
printc " array: "+str$(atime2) : ink rgb(255, 255, 255)
if mtime2 < atime2 and mtime2 < memtime2 then ink rgb(0, 255, 0)
if mtime2 > atime2 and mtime2 > memtime2 then ink rgb(255, 0, 0)
printc " memblock: "+str$(mtime2) : ink rgb(255, 255, 255)
if memtime2 < atime2 and memtime2 < mtime2 then ink rgb(0, 255, 0)
if memtime2 > atime2 and memtime2 > mtime2 then ink rgb(255, 0, 0)
print " memory: "+str$(memtime2) : ink rgb(255, 255, 255)
printc "DWORD:"
if atime3 < mtime3 and atime3 < memtime3 then ink rgb(0, 255, 0)
if atime3 > mtime3 and atime3 > memtime3 then ink rgb(255, 0, 0)
printc " array: "+str$(atime3) : ink rgb(255, 255, 255)
if mtime3 < atime3 and mtime3 < memtime3 then ink rgb(0, 255, 0)
if mtime3 > atime3 and mtime3 > memtime3 then ink rgb(255, 0, 0)
printc " memblock: "+str$(mtime3) : ink rgb(255, 255, 255)
if memtime3 < atime3 and memtime3 < mtime3 then ink rgb(0, 255, 0)
if memtime3 > atime3 and memtime3 > mtime3 then ink rgb(255, 0, 0)
print " memory: "+str$(memtime3) : ink rgb(255, 255, 255)
printc "FLOAT:"
if atime4 < mtime4 and atime4 < memtime4 then ink rgb(0, 255, 0)
if atime4 > mtime4 and atime4 > memtime4 then ink rgb(255, 0, 0)
printc " array: "+str$(atime4) : ink rgb(255, 255, 255)
if mtime4 < atime4 and mtime4 < memtime4 then ink rgb(0, 255, 0)
if mtime4 > atime4 and mtime4 > memtime4 then ink rgb(255, 0, 0)
printc " memblock: "+str$(mtime4) : ink rgb(255, 255, 255)
if memtime4 < atime4 and memtime4 < mtime4 then ink rgb(0, 255, 0)
if memtime4 > atime4 and memtime4 > mtime4 then ink rgb(255, 0, 0)
print " memory: "+str$(memtime4) : ink rgb(255, 255, 255)
print
print "Read test:"
printc "BYTE:"
if ratime1 < rmtime1 and ratime1 < rmemtime1 then ink rgb(0, 255, 0)
if ratime1 > rmtime1 and ratime1 > rmemtime1 then ink rgb(255, 0, 0)
printc " array: "+str$(ratime1) : ink rgb(255, 255, 255)
if rmtime1 < ratime1 and rmtime1 < rmemtime1 then ink rgb(0, 255, 0)
if rmtime1 > ratime1 and rmtime1 > rmemtime1 then ink rgb(255, 0, 0)
printc " memblock: "+str$(rmtime1) : ink rgb(255, 255, 255)
if rmemtime1 < ratime1 and rmemtime1 < rmtime1 then ink rgb(0, 255, 0)
if rmemtime1 > ratime1 and rmemtime1 > rmtime1 then ink rgb(255, 0, 0)
print " memory: "+str$(rmemtime1) : ink rgb(255, 255, 255)
printc "WORD:"
if ratime2 < rmtime2 and ratime2 < rmemtime2 then ink rgb(0, 255, 0)
if ratime2 > rmtime2 and ratime2 > rmemtime2 then ink rgb(255, 0, 0)
printc " array: "+str$(ratime2) : ink rgb(255, 255, 255)
if rmtime2 < ratime2 and rmtime2 < rmemtime2 then ink rgb(0, 255, 0)
if rmtime2 > ratime2 and rmtime2 > rmemtime2 then ink rgb(255, 0, 0)
printc " memblock: "+str$(rmtime2) : ink rgb(255, 255, 255)
if rmemtime2 < ratime2 and rmemtime2 < rmtime2 then ink rgb(0, 255, 0)
if rmemtime2 > ratime2 and rmemtime2 > rmtime2 then ink rgb(255, 0, 0)
print " memory: "+str$(rmemtime2) : ink rgb(255, 255, 255)
printc "DWORD:"
if ratime3 < rmtime3 and ratime3 < rmemtime3 then ink rgb(0, 255, 0)
if ratime3 > rmtime3 and ratime3 > rmemtime3 then ink rgb(255, 0, 0)
printc " array: "+str$(ratime3) : ink rgb(255, 255, 255)
if rmtime3 < ratime3 and rmtime3 < rmemtime3 then ink rgb(0, 255, 0)
if rmtime3 > ratime3 and rmtime3 > rmemtime3 then ink rgb(255, 0, 0)
printc " memblock: "+str$(rmtime3) : ink rgb(255, 255, 255)
if rmemtime3 < ratime3 and rmemtime3 < rmtime3 then ink rgb(0, 255, 0)
if rmemtime3 > ratime3 and rmemtime3 > rmtime3 then ink rgb(255, 0, 0)
print " memory: "+str$(rmemtime3) : ink rgb(255, 255, 255)
printc "FLOAT:"
if ratime4 < rmtime4 and ratime4 < rmemtime4 then ink rgb(0, 255, 0)
if ratime4 > rmtime4 and ratime4 > rmemtime4 then ink rgb(255, 0, 0)
printc " array: "+str$(ratime4) : ink rgb(255, 255, 255)
if rmtime4 < ratime4 and rmtime4 < rmemtime4 then ink rgb(0, 255, 0)
if rmtime4 > ratime4 and rmtime4 > rmemtime4 then ink rgb(255, 0, 0)
printc " memblock: "+str$(rmtime4) : ink rgb(255, 255, 255)
if rmemtime4 < ratime4 and rmemtime4 < rmtime4 then ink rgb(0, 255, 0)
if rmemtime4 > ratime4 and rmemtime4 > rmtime4 then ink rgb(255, 0, 0)
print " memory: "+str$(rmemtime4) : ink rgb(255, 255, 255)
wait key
