SBC6502 - 24 - Rugg/Feldman benchmarks.

By Administrator at June 26, 2019 17:50
Filed Under: SBC6502

A zase som u benchmarkov, neviem, neviem, nejako sa mi stále pletú pod nohami ...Smile. Napriek tomu že som už nejaké benchmarky uverejnil tak sem pridám ďalšie, nakoniec väčšina z nás má rada predstavu o tom ako naše staré mašinky bežia - teda ako sú rýchle, alebo pomalé - podľa toho ako to vnímame.

 

 

 

Poďme na vec:

Uverejnené benchmarkové testy a aj tabuľka rýchlosti vykonávania testov sú prevzaté z Wikipedie, tabuľka z mojej strany bola iba doplnená o údaje ktoré som nameral na SBC6502 (úplne na spodku tabuľky). Príjemné je zistenie, že si SBC6502 v uvedenej "konkurencii" vedie naozaj slušne, čo ma teší. Ak je osadený v SBC6502 procesor 14809 od Atari (čo je vlastne procesor 6502C s pridaným pinom HALT) tak časy sú úplne identické - čiže nevidel som dôvod písať rovnaké časy do ďalšieho riadku tabuľky. Jediný rozdiel je v spotrebe týchto procesorov, kde je výrazne nižší príkon ak je použitý procesor 65C02, proste staršia NMOS technológia proti novšej CMOS nemá v odbere šancu. Možno sa ešte oplatí pripomenúť že SBC6502 používa 8kByte verziu jazyku Microsoft Basic z roku 1977.

Pretože niektoré časy sú skutočne krátke tak vtedy najlepším riešením merania času je zväčšiť meraciu slučku na 10-násobok, potom po stopnutí sa čas jednoducho vydelí :10 a ste dostatočne presní v určení doby trvania jednotlivého testu, tu sa to hlavne týkalo konkrétne testu č.1.

 

Testy číslo 1 až 7 vznikli v roku 1977, test číslo 8 pochádza z neskoršieho obdobia.


_____________________________________________________
Benchmark 1:


300 PRINT "START"
400 FOR K=1 TO 1000
500 NEXT K
700 PRINT "END"
800 END


Slučky FOR-NEXT sú jednou z najzákladnejších konštrukcií v jazyku BASIC a ak je výkon týchto slučiek pomalý, je tiež veľmi pravdepodobné, že akýkoľvek program bežiaci v tomto BASICu bude tiež pomalý. Známym príkladom je Atari Basic , ktorý mal v sebe niekoľko problémov, ktoré výrazne spomaľovali výkonnosť slučiek FOR-NEXT - a mimochodom základné programy v Atari Basicu sú výrazne pomalé.

_____________________________________________________

Benchmark 2:

300 PRINT "START"
400 K=0
500 K=K+1
600 IF K<1000 THEN 500
700 PRINT "END"
800 END


Tento test vykonáva rovnaké operácie ako test č.1, ale používa sa explicitný test a skok namiesto použitia vstavaného FOR-NEXT. Všeobecne platí že tento program beží podstatne pomalšie ako test č.1, pretože väčšina Basic-ov tlačí adresu FOR cez zásobník, potom je NEXT relatívne rýchly, zatiaľ čo použitie GOTO vyžaduje aby interpreter prezeral program pre zodpovedajúce číslo riadku (tu je to 500). Niektoré verzie programu Basic optimalizovali GOTO pomocou explicitných štítkov (labels) alebo posúvaním cieľov GOTO v zásobníku aby ich vykonávali ako NEXT. Turbo Basic XL urobil oboje a vďaka tomu bežal omnoho rýchlejšie ako akýkoľvek podobný BASIC.

_____________________________________________________

Benchmark 3:

300 PRINT "START"
400 K=0
500 K=K+1
510 LET A=K/K*K+K-K
600 IF K<1000 THEN 500
700 PRINT "END"
800 END


Test č. 3 je rozšírením testu č.2, tentoraz pridaním základnej matematiky a variabilného prístupu. Porovnaním času na spustenie testov č.2 a č.3 je možné získať predstavu o matematickej knižnici daného BASIC-u.

_____________________________________________________

Benchmark 4:

300 PRINT "START"
400 K=0
500 K=K+1
510 LET A=K/2*3+4-5
600 IF K<1000 THEN 500
700 PRINT "END"
800 END


Rovnako ako test č.3 okrem toho, že konštanta K je nahradená číselnými premennými. To si vyžaduje, aby interpreter konvertoval hodnoty z ich textovej reprezentácie do svojho interného úložného formátu, čo si vyžaduje určitý čas. Určitú predstavu o výkonnosti tejto funkcie konverzie možno určiť porovnaním tohoto času s benchmarkom č.3.

_____________________________________________________

Benchmark 5:

300 PRINT "START"
400 K=0
500 K=K+1
510 LET A=K/2*3+4-5
520 GOSUB 820
600 IF K<1000 THEN 500
700 PRINT "END"
800 END
820 RETURN



Test č.5 zavádza volanie podprogramu. Dlhé programy v skorých verziách BASICu by značne využívali podprogramy, a preto bola dôležitá efektivita volacieho mechanizmu. V závislosti od spôsobu, akým systém fungoval, môže návratnosť vyrovnávať umiestnenie volajúceho účastníka spôsobom podobným NEXT, a tak bežať veľmi rýchlo.

_____________________________________________________

Benchmark 6:

300 PRINT "START"
400 K=0
430 DIM M(5)
500 K=K+1
510 LET A=K/2*3+4-5
520 GOSUB 820
530 FOR L=1 TO 5
540 NEXT L
600 IF K<1000 THEN 500
700 PRINT "END"
800 END
820 RETURN



Test č.6 definuje malé pole na začiatku a pridáva ďalšiu slučku FOR-NEXT vnútri hlavnej slučky. To má malý vplyv na kód, ale používa sa na nastavenie základnej línie pre test č.7.

_____________________________________________________

Benchmark 7:

300 PRINT"START"
400 K=0
430 DIM M(5)
500 K=K+1
510 LET A=K/2*3+4-5
520 GOSUB 820
530 FOR L=1 TO 5
535 M(L)=A
540 NEXT L
600 IF K<1000 THEN 500
700 PRINT"END"
800 END
820 RETURN



Tu sa priradí hodnota každému elementu poľa zakaždým, keď sa ide cez slučku. Porovnanie času potrebného na spustenie č.7 až č.6 indikuje účinnosť prístupu poľa.

_____________________________________________________

Benchmark 8:

300 PRINT"S"
400 K=0
500 K=K+1
530 A=K^2
540 B=LOG(K)
550 C=SIN(K)
600 IF K<1000 THEN GOTO 500
700 PRINT"E"
800 END

 

Test č. 8 bol pridaný od PCW (podrobnejšie popísané v pôvodnom zdroji), vykonáva sa niekoľko transcendentých funkcií, aby sa otestoval ich výkon.

_____________________________________________________

No a už musí nasledovať porovnávacia tabuľka časov vykonania jednotlivých testov (časy sú v sec.):

(v pôvodnom zdroji niektoré údaje neboli vyplnené, iné stroje tam neboli uvedené, takže ma prosím nebombardujte upozorneniami na to aký ktorý počítač som v tabuľke zabudol uverejniť  ...)

 

System CPU Basic Test 1 Test2 Test3  Test 4 Test 5 Test 6 Test 7 Test 8
IBM 5100     4,50 21,10 57,40 54,50 59,00 88,20 174,90 201,60
BBC Micro 6502 (2MHz) BBC 0,80 3,10 8,10 8,70 9,00 13,90 21,10 49,90
Atari 800XL 6502 (1.79MHz) Atari 2,20 7,30 19,70 24,10 26,30 40,30 60,10 424,00
Commodore 64 6510 (1MHz) MS 1,20 9,30 17,60 19,50 21,00 29,50 47,50 119,30
Sinclair ZX80 Z80 (3.25 MHz) Sinclair 1,50 4,70 9,20 9,00 12,70 25,90 39,20  
Sinclair Spectrum Z80 (3.25 MHz) Sinclair 4,40 8,20 20,00 19,20 23,10 53,40 77,60 239,10
Apple II 6502 (1MHz) Integer 1,30 3,10 7,20 7,20 8,80 18,50 28,00  
Apple II 6502 (1MHz) Applesoft 1,30 8,50 16,00 17,80 19,10 28,60 44,80 55,50
Altair 8800 8080 (1MHz) Altair 4.0 1,90 7,50 20,60 20,90 22,10 38,80 57,00 67,80
Altair 8800/TDL  ZPU Z80 (2MHz) Zapple 1,70 9,50 20,60 21,70 23,70 36,70 52,40  
Compucolor 8001 8080 (2MHz) Compucolor 8k 2,10 13,10 27,00 29,00 31,30 47,50 67,80  
SWTCP 6800 6800 (0.898MHz) SWT 8k 1,40 9,00 16,80 18,10 20,00 31,00 45,20 53,70
SWTCP 6800 6800 (0.898MHz) Altair 680 14,90 24,70 96,10 105,30 109,80 174,10 204,50  
Altair 680 6800 (0.5MHz) Altair 680 1.1 2,60 16,40 30,90 33,70 36,60 56,00 81,90 96,90
SBC6502 65C02 (1.8432MHz) OSI v1. rev. 3.2 0,72 4,80 8,48 9,18 10,00 15,00 22,00 39,20

 

Kompletný, pôvodný originálny článok na túto tému najdete na wikipedii:

Rugg/Feldman benchmarks

_____________________________________________________

27.06.2019

Ten doplňujúci údaj od Jirku pre Atari je fakt tragický ..., našťastie je k dispozícii v článku spomenutý Turbo Basic XL, ktorý je skutočne svojím výkonom niekde inde. Pretože nepatrí do základného vybavenia počítača tak údaje o jeho rýchlosti nie sú zaradené v samotnom článku. (Sám odkedy sa objavil vždy výhradne používam TB.)

____________________________________________________________

Vaše hodnotenie, Rate post:

Comments

6/26/2019 5:53:05 PM #

trackback

Directory SBC6502

Directory SBC6502

Igi blog |

6/26/2019 7:51:16 PM #

jirka

jen doplním chybějící záznam...

Atari 800XL - benchmark 8:

Atari Basic: 424 sekund :-D
Turbo Basic XL 1.5: 56 sekund (jen pro porovnání, jak moc špatný/nevýkonný vestavěný Atari Basic je)

spušteno (2x pro kontrolu) v emulátoru

jirka Czech Republic |

6/27/2019 8:46:46 AM #

Admin

Jirko, vďaka za doplnenie.

Admin Slovakia |

Comments are closed

Info o autorovi

Volám sa Igor Gramblička, bydlisko: Bratislava, Slovakia. Môj nick: Igi. Tento blog slúži na zobrazenie mojich záujmov - je to môj vlastný pohľad na veci, napriek  tomu dúfam že na mojich stránkach nájdete aj to čo hľadáte ...