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.