OldComp.cz

Komunitní diskuzní fórum pro fanoušky historických počítačů

Reklama!

Právě je 20 lis 2018, 21:26

Všechny časy jsou v UTC + 1 hodina




Odeslat nové téma Odpovědět na téma  [ Příspěvků: 27 ]  Přejít na stránku Předchozí  1, 2
Autor Zpráva
 Předmět příspěvku: Re: Benchmarking v BASICu
PříspěvekNapsal: 05 zář 2018, 16:08 
Offline
Kecka

Registrován: 28 říj 2016, 20:03
Příspěvky: 53
Has thanked: 2 times
Been thanked: 20 times
Lanex píše:
... se mi to zdálo nějaký pomalý... trochu jsem ti to zoptimalizoval, bez použití SP registru

To je pěkné. Dík za optimalizaci.

Nevěděl jsem, že to jde ještě rychleji. I když, měl jsem to tušit, protože už tady na fóru jednou Busy psal, že každý program jde ještě optimalizovat.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Benchmarking v BASICu
PříspěvekNapsal: 05 zář 2018, 16:17 
Offline
Kecka

Registrován: 28 říj 2016, 20:03
Příspěvky: 53
Has thanked: 2 times
Been thanked: 20 times
Ale teď, když na to koukám podrobněji, tak se mi zdá, že ty tam kopíruješ jenom 16 řádek, tj. bitmapa 32x16. Takže děláš polovinu práce.
Lanex píše:
ld a,16
...
dec a
jp nz,copyrow

Já jsem to měl pro bitmapu 32x32. A měl jsem tam mírný loop unrolling, takže v jednom průchodu vnitřního cyklu se řeší rovnou dvě řádky.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Benchmarking v BASICu
PříspěvekNapsal: 05 zář 2018, 16:38 
Offline
Radil
Uživatelský avatar

Registrován: 12 kvě 2013, 19:32
Příspěvky: 300
Bydliště: Kladno
Has thanked: 21 times
Been thanked: 66 times
A sakra, máš pravdu. Az dorazím domů tak se na to ještě podívám. To jsem tatar teda...

_________________
>> Amiga 1200, ZX Spectrum+, Didaktik Gama, LnxSpectrum, LnxTracker, https://www.ilnx.cz <<


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Benchmarking v BASICu
PříspěvekNapsal: 05 zář 2018, 18:40 
Offline
Pan Generální

Registrován: 22 kvě 2013, 20:14
Příspěvky: 2017
Bydliště: Bratislava
Has thanked: 220 times
Been thanked: 373 times
faraon píše:
199 POKE 23692,-1
Řádek 199 způsobí automatické scrollování
Namiesto -1 tam daj nulu, pobezi to rychlejsie a lepsie.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Benchmarking v BASICu
PříspěvekNapsal: 06 zář 2018, 10:34 
Offline
Radil
Uživatelský avatar

Registrován: 12 kvě 2013, 19:32
Příspěvky: 300
Bydliště: Kladno
Has thanked: 21 times
Been thanked: 66 times
lukz píše:
Ale teď, když na to koukám podrobněji, tak se mi zdá, že ty tam kopíruješ jenom 16 řádek, tj. bitmapa 32x16. Takže děláš polovinu práce.

Tak jsem to celé přepsal, použil jsem úplně jinou metodu, ted už to kopíruje 32*32 (doufám :D ). Rychlejší to je, ale už to neni tak markantní, jako předtím :) Stíhám to na 3,5MHz za 47 sec (164 836 515 t). Kód sem vkládat nebudu abych nerušil debatu kolem nejpomalejšího jazyka na světě - Basicu :) Odkaz na kód k náhlédnutí zde: http://srv.ilnx.cz/bm.asm

PS: Případně ještě tahle verze, tak to dělá rychleji (45s, 157 332 897t), ale už je to na úkor velikosti kódu http://srv.ilnx.cz/bm2.asm

_________________
>> Amiga 1200, ZX Spectrum+, Didaktik Gama, LnxSpectrum, LnxTracker, https://www.ilnx.cz <<


Naposledy upravil Lanex dne 06 zář 2018, 10:46, celkově upraveno 1

Nahoru
 Profil  
 
 Předmět příspěvku: Re: Benchmarking v BASICu
PříspěvekNapsal: 06 zář 2018, 10:42 
Offline
Radil

Registrován: 11 lis 2013, 09:29
Příspěvky: 294
Has thanked: 20 times
Been thanked: 83 times
A co treba misto:
Kód:
   ld   (spsave+1),sp   ;Prooooč neexistuje ld hl,sp ??? :)
spsave   ld   hl,0

pouzit:
Kód:
        ld      hl, 0
        add     hl, sp

Neslo by to takhle?

_________________
Sharp MZ-800++, MZ-1500++, MZ-2500++, SM-B-80T, MK-14_replica, HP-85, ZX-80+replica, ZX81, ZX-Spectrum+replica++, PMI-80+replica, SAM coupe++, PMD-85-2A+3, Didaktik-M, SORD-M5, TI-57, TI-59+PC-100, TI99/4A, ZetaV2+ppp, ZX-uno, Petr


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Benchmarking v BASICu
PříspěvekNapsal: 06 zář 2018, 10:49 
Offline
Radil
Uživatelský avatar

Registrován: 12 kvě 2013, 19:32
Příspěvky: 300
Bydliště: Kladno
Has thanked: 21 times
Been thanked: 66 times
Mikes21 píše:
Neslo by to takhle?

Super, díky, o 9 taktů rychlejší. Ani jsem netušil že add hl,sp existuje, není to zrovna nejpoužívanější instrukce :)

_________________
>> Amiga 1200, ZX Spectrum+, Didaktik Gama, LnxSpectrum, LnxTracker, https://www.ilnx.cz <<


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Benchmarking v BASICu
PříspěvekNapsal: 06 zář 2018, 14:59 
Offline
Pan Štábní
Uživatelský avatar

Registrován: 23 bře 2014, 19:13
Příspěvky: 1614
Has thanked: 65 times
Been thanked: 276 times
Busy píše:
Namiesto -1 tam daj nulu, pobezi to rychlejsie a lepsie.

Tak jsem to vyzkoušel:
Kód:
199 POKE 23692,-1 => 31:13
199 POKE 23692,0  => 31:13
199 PRINT AT 0,0; => 30:31

92 výpisy po 9 řádcích.

_________________
"When I designed Voyager, I did it on an Apple II with 48K of memory, and I wrote my own Basic program." - Burt Rutan
Obrázek Obrázek


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Benchmarking v BASICu
PříspěvekNapsal: 07 zář 2018, 10:44 
Offline
Pan Generální
Uživatelský avatar

Registrován: 18 čer 2013, 19:26
Příspěvky: 2221
Has thanked: 82 times
Been thanked: 314 times
Lanex píše:
lukz píše:
Ale teď, když na to koukám podrobněji, tak se mi zdá, že ty tam kopíruješ jenom 16 řádek, tj. bitmapa 32x16. Takže děláš polovinu práce.

Tak jsem to celé přepsal, použil jsem úplně jinou metodu, ted už to kopíruje 32*32 (doufám :D ). Rychlejší to je, ale už to neni tak markantní, jako předtím :) Stíhám to na 3,5MHz za 47 sec (164 836 515 t). Kód sem vkládat nebudu abych nerušil debatu kolem nejpomalejšího jazyka na světě - Basicu :) Odkaz na kód k náhlédnutí zde: http://srv.ilnx.cz/bm.asm

Pánové, je to super, já bych to teď rád dotáhl do konce a proto bych poprosil ještě o dvě věci:
    1) kdyby tomu benchmarku šlo dát "dvakrát tolik práce", aby na stroji, kde trval 45 sec. trval těch cca 90 sec.
    2) do záhlaví toho zdrojáku nějaký popis co/jak to dělá (klidně vytažený odsud z fóra) a aspoň trochu okomentovat ten zdroják

Já bych ho totiž chtěl "zoficiálnit", proto by měl být "na úrovni" - a pak že bychom ho portovali na všechny dosažitelné Z80-based platformy, s pomocí zdejších majitelů patřičného hardware, to je můj cíl... 8-)

Lanex píše:
PS: Případně ještě tahle verze, tak to dělá rychleji (45s, 157 332 897t), ale už je to na úkor velikosti kódu http://srv.ilnx.cz/bm2.asm
Jako líbí se mi, že jste se do toho zabrali a snažíte se to zoptimalizovat, ale tohle má být benchmark a zatížit CPU, takže není úplně cílem, aby to běželo rychle... :P

_________________
www.zxsparrow.com


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Benchmarking v BASICu
PříspěvekNapsal: 07 zář 2018, 13:37 
Offline
Pan Generální

Registrován: 22 kvě 2013, 20:14
Příspěvky: 2017
Bydliště: Bratislava
Has thanked: 220 times
Been thanked: 373 times
Lanex píše:
Ani jsem netušil že add hl,sp existuje
Takze pocas najblizsich dlhych zimnych vecerov sa isto stane tvojim najoblubenejsim citanim tato tabulka :dcod:
Lanex píše:
není to zrovna nejpoužívanější instrukce :)
No ako kde. Napriklad ja som ju obcas vyuzil v matematike pri demo efektoch, ked som potreboval k HL pripocitavat konstantu a uz som nemal ziadny iny register na toto volny.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Benchmarking v BASICu
PříspěvekNapsal: 07 zář 2018, 14:15 
Offline
Radil

Registrován: 11 lis 2013, 09:29
Příspěvky: 294
Has thanked: 20 times
Been thanked: 83 times
Ja mam radeji tuhle http://clrhome.org/table/. A jestli bude nejaka zima, nebo i za letniho horka, da se do ni obcas nahlednout ;-)

_________________
Sharp MZ-800++, MZ-1500++, MZ-2500++, SM-B-80T, MK-14_replica, HP-85, ZX-80+replica, ZX81, ZX-Spectrum+replica++, PMI-80+replica, SAM coupe++, PMD-85-2A+3, Didaktik-M, SORD-M5, TI-57, TI-59+PC-100, TI99/4A, ZetaV2+ppp, ZX-uno, Petr


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Benchmarking v BASICu
PříspěvekNapsal: 07 zář 2018, 15:11 
Offline
Pan Generální

Registrován: 22 kvě 2013, 20:14
Příspěvky: 2017
Bydliště: Bratislava
Has thanked: 220 times
Been thanked: 373 times
Mikes21 píše:
Ja mam radeji tuhle http://clrhome.org/table/. A jestli bude nejaka zima, nebo i za letniho horka, da se do ni obcas nahlednout ;-)
A vies mi podla tej tabulky povedat, co urobi instrukcia s kodom DD 00 ? :poke:


Nahoru
 Profil  
 
Zobrazit příspěvky za předchozí:  Seřadit podle  
Odeslat nové téma Odpovědět na téma  [ Příspěvků: 27 ]  Přejít na stránku Předchozí  1, 2

Všechny časy jsou v UTC + 1 hodina


Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 0 návštevníků


Nemůžete zakládat nová témata v tomto fóru
Nemůžete odpovídat v tomto fóru
Nemůžete upravovat své příspěvky v tomto fóru
Nemůžete mazat své příspěvky v tomto fóru
Nemůžete přikládat soubory v tomto fóru

Hledat:
Přejít na:  
Založeno na phpBB® Forum Software © phpBB Group
Český překlad – phpBB.cz