Antakaa joku POKE esimerkki tai vastaava, mutta PSETiä nopeampi
Ja QBasic on kyseessä
Esimerkki piirtää punaisen pisteen keskelle ruutua.
SCREEN 13 DEF SEG = &HA000 x = 160 y = 100 c = 4 POKE y * 320 + x, c
Tein pienen ohjelman, joka mittaa PSETin ja POKEn nopeuseroja täyttämällä 50 kertaa näytön kokoisen alueen. Tällä koneella ero oli POKEn hyväksi noin sekunnin verran, eli ei ihan mitätön.
SCREEN 13
'PSET
a! = TIMER
FOR k% = 1 TO 50
CLS
FOR i% = 0 TO 319
FOR j% = 0 TO 199
PSET (i%, j%), 1
NEXT
NEXT
NEXT
a1! = TIMER - a!
'POKE
DEF SEG = &HA000
a! = TIMER
FOR k% = 1 TO 50
CLS
FOR i% = 0 TO 319
FOR j% = 0 TO 199
POKE j% * 320& + i%, 1
NEXT
NEXT
NEXT
a2! = TIMER - a!
'POKE (optimoitu)
DEF SEG = &HA000
a! = TIMER
FOR k% = 1 TO 50
CLS
FOR i& = 0 TO 63999
POKE i&, 1
NEXT
NEXT
a3! = TIMER - a!
PRINT "PSETillä "; a1!; "sekuntia"
PRINT "POKElla "; a2!; "sekuntia"
PRINT "POKElla (o)"; a3!; "sekuntia"vai että sekunnin verran... kun kokeilin joskus itse vastaavaa, niin ero oli paaaaljoon suurempi. Millainen kone muuten sinulla on, Antti? Itselläni oli 523 mhz kone...
Luulisin, että mitä hitaampi kone on käytössä, sen suuremmaksi ero tulee. Tämä kone, jolla testasin, on 700 MHz. Ja riippuu asia tietysti siitäkin, millaisella ohjelmalla testataan. Tuossa edelläolevassa ohjelmassa sain tulokset:
PSETillä 2.359375 sekuntia
POKElla 1.539063 sekuntia
POKElla (o) 1.320313 sekuntia
Kiitos hyvästä testistä! Koneeni on AMD Athlon XP 1900+ eli 1,6GHz.
PSETillä 1.308594 sekuntia
POKElla .9921875 sekuntia
POKElla (o) .9882813 sekuntia
Aihe on jo aika vanha, joten et voi enää vastata siihen.