OldComp.cz
http://oldcomp.cz/

Benchmarking v BASICu
http://oldcomp.cz/viewtopic.php?f=134&t=6590
Stránka 22

Autor:  lukz [ 05.09.2018, 17:08 ]
Předmět příspěvku:  Re: Benchmarking v BASICu

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.

Autor:  lukz [ 05.09.2018, 17:17 ]
Předmět příspěvku:  Re: Benchmarking v BASICu

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.

Autor:  Lanex [ 05.09.2018, 17:38 ]
Předmět příspěvku:  Re: Benchmarking v BASICu

A sakra, máš pravdu. Az dorazím domů tak se na to ještě podívám. To jsem tatar teda...

Autor:  Busy [ 05.09.2018, 19:40 ]
Předmět příspěvku:  Re: Benchmarking v BASICu

faraon píše:
199 POKE 23692,-1
Řádek 199 způsobí automatické scrollování
Namiesto -1 tam daj nulu, pobezi to rychlejsie a lepsie.

Autor:  Lanex [ 06.09.2018, 11:34 ]
Předmět příspěvku:  Re: Benchmarking v BASICu

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

Autor:  Mikes21 [ 06.09.2018, 11:42 ]
Předmět příspěvku:  Re: Benchmarking v BASICu

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?

Autor:  Lanex [ 06.09.2018, 11:49 ]
Předmět příspěvku:  Re: Benchmarking v BASICu

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 :)

Autor:  faraon [ 06.09.2018, 15:59 ]
Předmět příspěvku:  Re: Benchmarking v BASICu

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.

Autor:  Jiiira [ 07.09.2018, 11:44 ]
Předmět příspěvku:  Re: Benchmarking v BASICu

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

Autor:  Busy [ 07.09.2018, 14:37 ]
Předmět příspěvku:  Re: Benchmarking v BASICu

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.

Autor:  Mikes21 [ 07.09.2018, 15:15 ]
Předmět příspěvku:  Re: Benchmarking v BASICu

Ja mam radeji tuhle http://clrhome.org/table/. A jestli bude nejaka zima, nebo i za letniho horka, da se do ni obcas nahlednout ;-)

Autor:  Busy [ 07.09.2018, 16:11 ]
Předmět příspěvku:  Re: Benchmarking v BASICu

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:

Autor:  Milsa [ 25.01.2019, 19:47 ]
Předmět příspěvku:  Re: Benchmarking v BASICu

Som prekvapený, že nikto nespomenul najznámejší BASIC benchmark a to GAMMIX test. Už nejakú dobu zháňam jeho zdroják a zabudol naň aj Google.

Občas pozerám nejaké scifi o zmene času a podobne. Niekedy mám pocit, že som z iného času, keďže ani tu to nikto nepozná.

Stránka 22 Všechny časy jsou v UTC + 1 hodina [ Letní čas ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/