Programátoři z pekel zde za šat a stravu programují čipová pseuda. Nyní s favicon!

Retrobenchmarking

Začalo to jako krátký článek na Jirkově blogu, v němž si postěžoval, že program pro hledání prvočísel psaný v BASICu sice může sloužit k zjištění výpočetní rychlosti počítače, ale protože musel upravit počet hledaných čísel z původních 500 na nižších 250, nemá výsledky z jiných počítačů, s nimiž by se dalo udělat nějaké srovnání.

Nastartoval jsem emulátor ZX Spectra, program přepsal, změřil čas a výsledek společně s výzvou pro ostatní hodil na Technomorouse. Během osmačtyřiceti hodin se díky ctěnému čtenářstvu podařilo nashromáždit pětadvacet hodnot, po dalších třech dnech je tu celkem více než pět desítek výsledků, v tomto článku vám je přináším.

Měřilo se tímto kódem, který byl v několika případech upraven dle potřeb konkrétní platformy:
10 LET W=250: DIM F(W):LET P=1:LET A=3 
20 LET F(P)=A:LET P=P+1:IF P>W THEN STOP 
30 LET A=A+2:LET X=1 
40 LET S=A/F(X):IF S=INT(S) THEN 30 
50 LET X=X+1:IF X>=P THEN 60
51 IF F(X)*F(X)<=A THEN 40 
60 GOTO 20
A zde jsou již výsledky, z nichž je patrné, že spíš než o ukazatel hrubého výkonu daného procesoru se jedná o ukazatel rychlosti konkrétního BASIC interpretu či kompilátoru:

Počítač Čas (s) Poznámka
Acorn Archimedes A4000 (float proměnné) 3.24
Acorn Archimedes A4000 (integer proměnné) 2.91
Amstrad CPC464 50
Amstrad CPC6128 46.93
Amstrad 6128plus 46
Amstrad NC100 47
Apple IIe (Applesoft BASIC) 74
Atari 130XE (Altirra Basic, FAST) 50.76 emulátor
Atari 130XE (Altirra Basic, SLOW) 69.08 emulátor
Atari 130XE (Atari Basic rev. C, FAST) 81.58 emulátor
Atari 130XE (Atari Basic rev. C, SLOW) 111.02 emulátor
Atari 130XE (Basic XE, FAST) 53.54 emulátor
Atari 130XE (Basic XE, SLOW) 73 emulátor
Atari 130XE (Basic XL, FAST) 51.54 emulátor
Atari 130XE (Basic XL, SLOW) 70.18 emulátor
Atari 130XE (Basic++ 1.02, FAST) 77.14 emulátor
Atari 130XE (Basic++ 1.02, SLOW) 104.98 emulátor
Atari 130XE (Microsoft Basic 1.0, FAST) 58 emulátor
Atari 130XE (Microsoft Basic 1.0, SLOW) 79 emulátor
Atari 130XE (OSS Basic A+ v3.04, FAST) 74.64 emulátor
Atari 130XE (OSS Basic A+ v3.04, SLOW) 101.58 emulátor
Atari 130XE (Turbo Basic XL, FAST) 32.16 emulátor
Atari 130XE (Turbo Basic XL, SLOW) 43.78 emulátor
Atari 800XL (Atari Basic) 112 emulátor
Atari 800XL (Turbo BASIC 1.5) 45 emulátor
Atari Portfolio (Power BASIC) 53
Atari STE (Enhanced Basic 68k) 20.2
Atari STE (GFA Basic) 3.6
Atari STE (Omikron Basic) 4.5
Atari STE (ST BASIC) 29.5
BBC Master (float proměnné) 27
BBC Master (integer proměnné) 22
Ben NanoNote (Bywater BASIC) 6.1
Cambridge Z88 69.5
Casio PB-1000 292
Commodore 64 (FAST) 82 emulátor
Commodore 64 (SLOW) 86
Commodore 64 (Simon's BASIC) 99.05 emulátor
Commodore 8296 86
Commodore Plus/4 (ROM BASIC V3.5) 92
Commodore VIC-20 (ROM BASIC V2) 71
Didaktik Kompakt (1993) 114
DuinoMite-Mini (MM BASIC 2.7) 2
Elektronika BK0010-1 (Vilnius BASIC) 408
Elektronika MK-90 492
eZ80 (18.432MHz, Microsoft Basic 5.21) 6.5
HP 200LX (GW BASIC) 25
Grundy NewBrain 100.3
IBM PS/2 P70 (QuickBASIC, float proměnné) 0.6768
IBM PS/2 P70 (QuickBASIC, integer proměnné) 0.4656
iPad 3,1 (iOS 8, Hand BASIC) 0.5
NEC PC8201 85
Palm Centro (SmallBASIC) 5
Palm Treo 650 (SmallBASIC) 4.6
Palm Tungsten T5 (SmallBASIC) 3.7
PC-XT (IBM PC BASIC 1.10, 4.77MHz) 61
PC-XT (IBM PC BASIC 1.10, 10MHz) 29
Philips VG8235/20 (MSX BASIC 2.1) 98
Psion MC600 (GW-BASIC, 4.77MHz) 38
Replica 1 (Applesoft Lite) 76.2
Replica 1 (Enhanced BASIC 1.10) 65.5
SAM Coupé 8
SAPI-1 ZPS-2 (BASIC EXP V5.0/G, konec) 223
SAPI-1 ZPS-2 (BASIC EXP V5.0/G, začátek) 100
SBC6502 (1.8432MHz, OSI Basic 1.0 rev 3.2) 36
SGI O2, Bywater BASIC 12
Sharp MZ-821 63
Sharp MZ-821 (BASIC 1Z-016A V1.0A) 62
Sharp MZ-821 (BASIC MZ-5Z009 V1.0B) 63
Sharp MZ-821 (F-BASIC V.700) 60
Sharp MZ-821 (GI-BASIC V1.3) 55
Sharp MZ-821 (HU-BASIC) 92
Sharp MZ-821 (MZ-800 Disk-Basic V1.5A) 63
Sharp MZ-821 (S-BASIC 1Z-013B V1.0A) 65
Sharp MZ-821 (S-BASIC-COMPILER) 19
Sharp PC-1248 249
Sharp PC-1480U 111
Sharp Zaurus SC-C760 (Bywater BASIC) 8.5
Sinclair QL (Minerva ROM 1.98) 46
Sinclair QL+SuperGoldCard (Minerva ROM 1.98) 6
Sinclair QL+SuperGoldCard (SMSQ/E 2.58) 2
Sinclair ZX80 (ZX81 ROM) 95
Sinclair ZX81 (FAST) 98
Sinclair ZX81 (SLOW) 394
Sinclair ZX Spectrum (BETA BASIC 3.0) 142
Sinclair ZX Spectrum (ROM BASIC) 113 emulátor
Sinclair ZX Spectrum (ToBoS Fp V2.0) 10.5 emulátor
Tesla Ondra SPO-186 514 emulátor
Tesla Ondra SPO-186 (jiný BASIC, FAST) 140
Tesla Ondra SPO-186 (jiný BASIC, SLOW) 890
Tesla PMD 85-1 113 emulátor
Tesla PMD 85-2 111 emulátor
Tesla PMD 85-2A (BASIC G/V2.A) 112
Tesla PMD 85-3 112 emulátor
Texas Instruments TI-83 Plus 224
Thomson MO5 112
TRG Pro (68k@20MHz) 25
TRS-80 Model 100 130
Zeta SBC (Microsoft Basic 5.21) 27


Samozřejmě nesmí chybět graf, tentokrát seřazený hezky podle doby výpočtu, od nejrychlejšího po nejpomalejší:
8bit benchmark - výsledky
(FAST / SLOW označuje režim s vypnutým respektive zapnutým zobrazováním u počítačů, kde je možné zobrazení vypnout, více viz diskusi pod článkem)

Není to, pravda, nic moc převratného. Všichni víme, že interpretace je pomalejší než spouštění kompilátu a na příkladu ZX Spectra je to skutečně dobře demonstrováno. Stejně dobře je demonstrováno, jak rychlost ovlivňuje použití správného datového typu (u BBC Master). I přesto si ale myslím, že možnost srovnat si staré počítače podle rychlosti výpočtu je zajímavá.

Kdybyste náhodou změřili čas ještě někde jinde, pošlete prosím výsledek jako komentář buď sem, nebo ještě lépe k mému původnímu článku - dodatečně vaše výsledky do tabulky i grafu přidám. Všem přispěvatelům díky!