VIC20 vs. Amiga500plus

VIC20/Amiga500plus hastighetsjämförelse

Hmmm? Behövs verkligen denna test? Alla vet väl att Amigan är snabbare än en gammal VIC20.... Jaja, vi får väl se... Alla Basic-test på Amigan är gjorda i AmigaBasic som följde med AmigaDos1.3. Detta eftersom det är en interpreterande (ej kompilerande) basic liksom CBM Basic V2 på VIC20 är. Det borde bli en rättvis test tycker jag. För grafiktestet med linjerna används "Super Expander" på VIC20 som lägger till grafik-kommandon till basicen.

Amiga 500plus lanserades 1991 och är en lyxvariant av Amiga500 som kom 1987.(A500+ är en A500 med AmigaDos2.0, 1 meg chipmem och ECS grafik). Grafiken är lite snabbare än på Amiga500, men annars är den nog ungefär lika snabb.
VIC20 lanserades 1981. Vilken var den mest revolutionerande av dem egentligen?

Testnamn
samt beskrivning av testet.
VIC20
(sekunder)
Amiga500plus
(sekunder)
Vilken dator som "vann" testet samt hur många procent snabbare den var.
Tom FOR-loop
FOR T=1 to 10000 : NEXT
9,68 3,74 Amiga
158,8%
Textutskrift/rullning 1
PRINT "(CLRSCR)TEXT OUTPUT/SCROLLING"
FOR T=1 to 600 : PRINT "TESTING OUTPUT...";:NEXT

VIC: 22x23 tecken, 8 färger
Amiga: 77x23 tecken, 4 färger
12,13 27,00 VIC
122,59%
Textutskrift/rullning 2
PRINT "(CLRSCR)TEXT OUTPUT/SCROLLING2"
FOR T=1 to 600 : PRINT "TESTING OUTPUT..." : NEXT

VIC: 22x23 tecken, 8 färger
Amiga: 77x23 tecken, 4 färger
13,97 66,40
VIC
375,3%
Matematik
Y=34.23 : X=84.12
FOR T=1 to 500 : Y=X/1.02 : X=X*1.03 : J=(X+Y)*(X/Y) : NEXT
16.70 2,06 Amiga
710,7%
Nummer och Arrayer
DIM O(500) : FOR T=0 TO 500 : O(T)=T : NEXT
FOR T=1 TO 499 : O(T)=O(T)+O(T-1)+O(T+1) : NEXT
9,27 3,24 Amiga
186,1%
Stränghantering
E$=""
FOR T=1 TO 255 : E$=E$+CHR$(t) : NEXT
FOR T=1 TO 200 : R$=MID$(E$,T,50)+CHR$(T) : NEXT
FOR T=1 TO 200 : R$=RIGHT$(E$,T)+CHR$(T) : NEXT
5,82 3,18 Amiga
83,0%
Linjer
VIC (128x128, 16 färger):
FOR T=1 TO 800
DRAW 2, RND(1)*1023, RND(1)*1023 TO RND(1)*1023, RND(1)*1023)
NEXT


Amiga (320x255, 16 färger)
FOR t=1 TO 800
LINE (RND*320, RND*255)-(RND*320, RND*255),1
NEXT
53,32 9,28 Amiga
474,6%
Loop i maskinkod
VIC:
7000 LDA #$30
7002 LDY #$FF
7004 LDX #$FF
7006 DEX
7007 BNE $7006
7009 DEY
700A BNE $7004
700C SBC #$1
700E BNE $7002
7010 RTS

Amiga:
move.b #$30,d0
loop3:
move.b #$FF,d1
loop2:
move.b #$FF,d2
loop1:
subq.b #$01,d2
bne loop1
subq.b #$01,d1
bne loop2
subq.b #$01,d0
bne loop3
rts
14,03

(Ca. 0,45 MIPS*)
7,44

(Ca. 0,84 MIPS*)
Amiga
88,6%
Disk Access
Inladdning av ett 19199 bytes stort program från en diskett
43 2,6 Amiga
1553,8%
Programlistning
Listning av ett 118 rader långt basicprogram.
VIC: (CLR HOME)
LIST
Amiga: copy ram:test.bas *
(med copy resident - snabbare än type)
5 7 VIC
40,0%
Directory
Hämta programlista från en diskett för ett bibliotek som innehåller 58 filer
VIC: LOAD "$",8
Amiga: list >NIL: df1:test/
5 13 VIC
160,0%
TOTALT
(med Disk access och directory)

187,92 144,94 Amiga
29,6%
TOTALT
(utan Disk access och directory)

139,92 129,34 Amiga
8,2%
*MIPS = Miljoner instruktioner per sekund. Tänk på att alla interrupts är på, så egentligen har själva processorn ett högre MIPS-värde. Eftersom amigan är 32/16-bitars mot VIC20ns 8-bitar, så blir Amigan snabbare när större tal än värdet 255 skall hanteras. Samma amigaprogram fast med longwords (32-bitars datamängder) ger dock bara 0,67 MIPS. Något annat som är intressant att veta är att amiga-versionen av programmet tar upp dubbelt så mycket minne som VIC-versionen. Longwords-versionen tog upp ännu mer.

Kommentar

Det blev lite oväntat en ganska jämn kamp. Amigan har ju i alla fall en 32/16-bit processor på 7.14 megaherts och ett gäng avancerade hjälpprocessorer för grafiken. VIC har bara en 8-bit processor på 1.11MHz och ett grafik/ljud-chip. Vart tog amigans kraft vägen egentligen?

Först kan vi ta en titt på frekvenserna. Som man kan se av maskinkodstestet så behöver amigan betydligt fler klockcykler för att utföra en instruktion. Om 6502 i VIC skulle behöva lika många klockcykler som 68000 för att utföra lika många instruktioner, så skulle VIC20 gått på 3,79MHz (7.44/14.03)*7.14 (Testresultatet för amiga/VIC gånger amigans frekvens).

Det som amigan är snabbast på är matten (antagligen beroende på att processorn är 32-bitars internt), linjerna (beroende på grafikprocessorerna) och disk accessen (mest beroende på operativsystemet).

Det som VICen är snabbast på är textutskrift beroende på att VIC har en textskärm, medan amigan bara har en grafikskärm. Om text skall skrivas ut på skärmen på en amiga, så blittas den ut som ett grafiskt objekt. På VIC är det en minnesposition för varje bokstav/tecken på skärmen. Om vi då säger att vi skall flytta upp all text på hela skärmen ett steg så att man får plats med en ny rad text längst ner, så behöver processorn bara flytta 506 (22*23) bytes minne. På amigan används "blittern" istället (en del av grafikarkitekturen) för att flytta grafikdata på skärmen. Om vi har ett lika stort fönster som på VIC (22*23 tecken) och 8 färger, så måste 12144 (22*23*8*3) bytes flyttas gentemot 506 bytes på VIC.

I mitt test mellan olika amigamodeller har jag ett likadant test som "Textutskrift/rullning 2" (där heter det "Scrolling Textmass"). Den dator som var snabbast på det testet var en A4000 med 68040/40MHz med ett CV64/3D grafikkort. Den var 221,3% snabbare än A500+ på det testet. VIC20 var 375,3% snabbare än A500+ på i princip samma test. VIC20 kan alltså mäta sig med de snabbaste Amigorna på just denna punkt.

På grund av detta känns VIC väldigt snabb att använda. Amiga500 känns ofta väldigt seg. Även andra saker är sega som gör att amigan känns seg. T.ex. när man öppnar en låda i workbench och måste vänta på alla ikoner som laddas in eller när man skall lista filer i CLI. Ett av testen visar ju också att VIC är snabbare på just detta.

Övrigt vad jag kan se av testerna är att amigan som sagt blir snabbare när större tal än 255 (eller decimaltal) används (eftersom den är 16/32-bitars). Alla variabler i basic-programmen är decimaltal. Och i de tester där enbart bytes används (stränghanteringen och maskinkodsprogrammet) så blir det mer jämt.

Tilläggas bör att kraftfullare modeller av Amigan, t.ex Amiga4000 eller en Amiga1200 med turbokort och hårddisk känns betydligt piggare att använda än en Amiga500. Det är betydligt större skillnad i prestanda mellan olika Amigamodeller än mellan VIC20 och Amiga500. Min A1200 030/50 tog 0,52 sekunder för att köra maskinkodsprogrammet. Byte och longword-versionerna tog exakt lika lång tid och det ger ett värde på 12,08 MIPS (1330,8% snabbare än A500+) Titta även på sidan Amiga vs. Amiga

Rättvis test?

Noteras bör att jag inte på något sätt utformat testerna så att VIC skulle "hänga med", utan jag tog samma test som jag gjorde mellan VIC20 och C64 och lade till några nya tester som jag tyckte var intressanta. Jag lade till ett linjeritningstest som amigan vann stort samt ett directory-test som VIC vann. Om jag hade hållit mig till det ursprungliga testet, så hade det faktiskt blivit betydligt jämnare, nämligen enligt följande:

VIC hade vunnit tävlingen utan disk access:
VIC Totalt: 86.6
C64 Totalt: 111.51
Amiga Totalt: 120.06
VIC var 38,6% snabbare än Amiga, och 28,8% snabbare än C64

Amiga hade med knapp marginal vunnit tävlingen MED disk access:
VIC Totalt: 129,60
C64 Totalt: 163,51
Amiga Totalt: 122,66
Amiga var 5,6% snabbare än VIC, och 33,3% snabbare än C64

Så ni som tycker att Amigans ära gått förlorad lite här skall vara glada att jag lade till linjeritningstesten så att det blev lite jämnare. Om jag hade lagt till fler tester av samma typ så hade naturligtvis amigan vunnit större.

Samtidigt tycker jag att VIC20 får lite av en upprättelse efter att ha haft en lite undanskymmd plats i datorhistorien som "bara" föregångaren till C64... VIC20 var nog faktiskt mer revolutinerande (och billigare) än både C64 och Amiga1000 när respektive dator lanserades.

Fördelar/nackdelar med respektive dator


Tillbaka till
Anders Datormuseums meny