Autor Wątek: Interpretery BASIC na różne platformy - test wydajnościowy  (Przeczytany 28518 razy)

flypeter

  • ****
  • Wiadomości: 415
  • Miejsce pobytu:
    KUJ-POM
Odp: Interpretery BASIC na różne platformy - test wydajnościowy
« Odpowiedź #45 dnia: 2015.11.30, 12:49:52 »
To tylko testy na szybkość interpretera Basica. W necie jest filmik z jakiegoś programu w BBC, gdzie właśnie BBC miażdżyło ZX'a i jeszcze jakiś komputer - test w Basicu - ale prowadzący oczywiście zachwycali się szybkością komputera.
W przypadku Atari (jak i innych komputerów) mamy kilka wersji Basica do wyboru. Atari Basic jest koszmarnie wolny, znaczny wzrost szybkości wykonywania programu można uzyskać używając Basica XE lub Turbo Basica XL.
Np.
programik 1:

1 FOR I=1 to 50000: NEXT I

Czasy:
  TURBO BASIC XL:   58.0
  TURBO COMPILER:   54.1
  BASIC XE FAST :   61.6
  BASIC XE SLOW :   61.8
  BASIC XE BARE :  237.0
  ATARI BASIC   :  237.0

programik 2:

10000 I=0
10010 I=I+1: IF I<20000 THEN 10010

Czasy:
  TURBO BASIC XL:   58.1
  TURBO COMPILER:   12.5
  BASIC XE FAST :   41.2
  BASIC XE SLOW :   51.2
  BASIC XE BARE :   97.6
  ATARI BASIC   :  163.2

Czyli różnice spore.
ZX81, ZX 48k/+/128+2/2A/+3, QL, TC 2048, UK2086, Harlequin | Atari 8/16-bit | Commodore 8/16-bit | CPC | MSX | TI99/4 | Acorn Electron, BBC Master Compact | Mac Classic, PowerMac 6100, Apple II+ | Elwro 800 Junior | Meritum | Robotron A5105 | Oric-1 | 8088/80286/80386/80486/Pentium I-IV

matofesi

  • *****
  • Wiadomości: 2048
  • Miejsce pobytu:
    Toruń/Poland
Odp: Interpretery BASIC na różne platformy - test wydajnościowy
« Odpowiedź #46 dnia: 2015.11.30, 13:02:11 »
@flypeter oczywiście, że to jest porównanie BASICów i to średniej jakości. W praktyce należałoby porównać kilka różnych algorytmów - jakieś obliczenia matematyczne, jakieś sortowanie itp. Dopiero taki uśredniony benchmark przeliczony oczywiście przez częstotliwość zegara dawałby jakieś pojęcie o "jakości" danego komputera i jego BASICa :)

A z czystej ciekawości odpaliłem ten sam kod po kompilacji ToBoSem - tym razem program wykonywał się niecałe 27 sekund ;)

flypeter

  • ****
  • Wiadomości: 415
  • Miejsce pobytu:
    KUJ-POM
Odp: Interpretery BASIC na różne platformy - test wydajnościowy
« Odpowiedź #47 dnia: 2015.11.30, 13:09:37 »
MSX1: 3:53

ZX81, ZX 48k/+/128+2/2A/+3, QL, TC 2048, UK2086, Harlequin | Atari 8/16-bit | Commodore 8/16-bit | CPC | MSX | TI99/4 | Acorn Electron, BBC Master Compact | Mac Classic, PowerMac 6100, Apple II+ | Elwro 800 Junior | Meritum | Robotron A5105 | Oric-1 | 8088/80286/80386/80486/Pentium I-IV

flypeter

  • ****
  • Wiadomości: 415
  • Miejsce pobytu:
    KUJ-POM
Odp: Interpretery BASIC na różne platformy - test wydajnościowy
« Odpowiedź #48 dnia: 2015.11.30, 13:29:05 »
TI99/4A: 5:58
ZX81, ZX 48k/+/128+2/2A/+3, QL, TC 2048, UK2086, Harlequin | Atari 8/16-bit | Commodore 8/16-bit | CPC | MSX | TI99/4 | Acorn Electron, BBC Master Compact | Mac Classic, PowerMac 6100, Apple II+ | Elwro 800 Junior | Meritum | Robotron A5105 | Oric-1 | 8088/80286/80386/80486/Pentium I-IV

matofesi

  • *****
  • Wiadomości: 2048
  • Miejsce pobytu:
    Toruń/Poland
Odp: Interpretery BASIC na różne platformy - test wydajnościowy
« Odpowiedź #49 dnia: 2015.11.30, 14:04:36 »
Sam Coupé w standardowym trybie graficznym: 1:14. I żeby było zabawnie to samo z wyłączonym ekranem: 1:09 ;)

ZbyniuR

  • *****
  • Wiadomości: 3333
  • Miejsce pobytu:
    Carlisle w UK
  • CPC AGA PSX
Odp: Interpretery BASIC na różne platformy - test wydajnościowy
« Odpowiedź #50 dnia: 2015.11.30, 14:16:12 »
Dzięki za podanie wyników, choć jeszcze od XE nie widzę, albo do C128. :)

Co do megaherców, to po pierwsze w CPC procek chodzi na 3.5 a nie 4, bo co 8my takt trafia do CRTC.
A po drugie 1MHz w MOS i Z80 to nie tyle samo mocy, bo konstrukcja procków jest inna i podobne rozkazy w Zilogu potrzebują zwykle więcej taktów na wykonanie, w praktyce od tylu samo do nawet 4ech razy więcej taktów. Uśredniając, (choć jest to porównanie bardzo niezadowalające z powodu dużej rozbieżności różnic w różnych rozkazach), dla uproszczenia powiedzmy że Z80 musi być taktowany 2 razy szybciej by uzyskać zbliżoną moc do 6502. Do takich wniosków doszedł też autor artykułu który kiedyś czytałem bodajże w Komputerze. Czyli w przybliżeniu procek w CPC ma o ok 70% więcej mocy od tego w C64 a nie aż 4 razy jak to liczą laicy. I może ktoś (fan C64) powiedzieć że czemu się domagam by ulgowo traktować Ziloga zamiast przyznać że jego konstrukcja jest kulawa. Otóż przyznaję że jest taktożerny. Ale zapytam czemu się domagać ulgowego traktowania C64 z powodu jego słabego taktowania? Skoro konstruktorzy poskąpili mu Megaherców, to poskąpili. I może lepiej się skupmy na rzeczywistych możliwościach a nie teoretycznych jakie by miała ta czy inna maszyna gdyby dostała coś czego nie ma a co ma konkurencja.

Zresztą porównując C64 z MOŚkiem 1MHz i wynikiem 2m15s do BBC Micro z takim samym prockiem (więc łatwo przeliczyć MHz-ety), taktowanym 2MHz i wynikiem 47sek, to który tu wypada słabiutko? ;)

Próbowałem znaleźć jakiś kompilator zmienno-przecinkowy do CPC i wiem że popularny był Taifun ale w necie widzę tylko francuską wersję i niemiecką instrukcję obsługi. :(  W tej chwili nie mam czasu by szukać bardziej ludzkiej.

« Ostatnia zmiana: 2015.11.30, 14:43:53 wysłana przez ZbyniuR »
- Jeśli masz w domu światło i wodę, tzn. że masz światłowód. ;)

wojtek9989

  • ***
  • Wiadomości: 144
  • Miejsce pobytu:
    Toruń
Odp: Interpretery BASIC na różne platformy - test wydajnościowy
« Odpowiedź #51 dnia: 2015.11.30, 21:23:51 »
Odpaliłem swoje C128 i oto wyniki :

Tryb 40 kolumn - 2:48

Tryb 80 kolumn - 1:23

Tryb C64 - 2:15

Co dziwne , dlaczego  basic 7 jest wolniejszy od basic 2 ? (sprawdzałem dwa razy )

Wie ktoś może jak taki programik wpisać pod cp/m ? ,to też bym sprawdził jeszcze w tym trybie .

flypeter

  • ****
  • Wiadomości: 415
  • Miejsce pobytu:
    KUJ-POM
Odp: Interpretery BASIC na różne platformy - test wydajnościowy
« Odpowiedź #52 dnia: 2015.11.30, 21:51:37 »
Atari Basic 3:50
Acorn Electron 1:04
ZX81, ZX 48k/+/128+2/2A/+3, QL, TC 2048, UK2086, Harlequin | Atari 8/16-bit | Commodore 8/16-bit | CPC | MSX | TI99/4 | Acorn Electron, BBC Master Compact | Mac Classic, PowerMac 6100, Apple II+ | Elwro 800 Junior | Meritum | Robotron A5105 | Oric-1 | 8088/80286/80386/80486/Pentium I-IV

trojacek

  • *****
  • Wiadomości: 6831
  • Miejsce pobytu:
    Warszawa
Odp: Interpretery BASIC na różne platformy - test wydajnościowy
« Odpowiedź #53 dnia: 2015.11.30, 22:00:33 »
Wie ktoś może jak taki programik wpisać pod cp/m ? ,to też bym sprawdził jeszcze w tym trybie .

Jest kilka basiców do wyboru:
http://www.z80.eu/basic.html

ZbyniuR

  • *****
  • Wiadomości: 3333
  • Miejsce pobytu:
    Carlisle w UK
  • CPC AGA PSX
Odp: Interpretery BASIC na różne platformy - test wydajnościowy
« Odpowiedź #54 dnia: 2015.12.01, 01:07:20 »
Czyli jak dotąd, w tym teście wyszukiwania liczb pierwszych w Basicu mamy:

BBC Master - 0'25 - wersja tu użyta jest ciut zoptymalizowana, bo ma dodane % przy zmiennych integer, ale przypuszczam że to mu daje najwyżej ze 2 sek.

BBC Micro - 0'47
BBC Electron - 1'04
Sam Coupe - 1'14
CPC 6128 (80) - 1'19 - w 6128 są ciut szybsze procedury
CPC 464 (40) - 1'22  - 2 sek wolniej niż w 80 kolumnach
C128 (80) - 1'23 - być może dopiero włączenie trybu 80 kolumn przestawia procka na 2MHz
C64        - 2'15
C128 (40) - 2'48
Atari XL/XE - 3'50
MSX1     - 3'53
ZX48     - 4'08 - zaskoczyło mnie że jest wolniejszy od XE, i szybszy od 128.
ZX128   - 4'50
TI99/4A - 5'58 - jedyny tu 16-bitowiec.

Na razie mamy jedyny przykład z kompilatora na Speccy - ToBoSem - 0'27. Czekamy na więcej oraz na Basic z C+4, Vic20, ZX81, Meritum, Apple2, ST, Amigę... i co tam jeszcze macie. ;)

I tak z ciekawości, dodajecie jakieś rozkazy co mierzą czas, czy mierzycie stoperem w ręku? :)

Wyniki jakie podałem są bez modyfikacji ale eksperymentowałem z optymalizacją, czyli:
  usunięcie zbędnych spacji, zmiana nazw zmiennych na 1no-literowe, zadeklarowanie Integer tam gdzie się da zamiast funkcji INT(), oraz wciśnięcie więcej rozkazów do linii, bo przeskoczenie dwukropka trwa krócej niż do następnej linii. Dawało ułamki sekund, nawet dodanie kasowania ekranu na początku sprawia że o ileś numerków później drukowanie ich wymaga przesuwania ekranu. W sumie dało to 8 sek oszczędności.
Można też zmodyfikować nieco kod np. dodać średnik po zmiennej w PRINT-cie, by nie przesuwał ekranu bo wszystkie liczby mieszczą się wtedy w kilkunastu linijkach i mamy kolejne 2 sekundy mniej. Ale najwięcej dała zmiana parametrów w pierwszej pętli FOR, zaczynamy od 1 a nie 2 i dodajemy STEP 2 i mamy wynik poniżej 53 sekund. No ale to już jest nielegalny doping. :D   A BBC Micro nawet bez tego jest szybszy.

PS. Pamiętam że Bajtek kiedyś promował taki język do Atarki o nazwie Action, czy ktoś coś.. ?
PS2. Wydaje mi się że fani CP/M-a woleli Pascala. Zresztą Z80 w C128 cyka tylko na 2MHz, więc szału się nie spodziewam.
- Jeśli masz w domu światło i wodę, tzn. że masz światłowód. ;)

steev

  • *****
  • Wiadomości: 1362
  • Miejsce pobytu:
    inode 42
Odp: Interpretery BASIC na różne platformy - test wydajnościowy
« Odpowiedź #55 dnia: 2015.12.01, 08:35:54 »
A inne BASICi na ZXa?
Wg wiki było sześć wersji Beta i cztery Mega...
Machines should work. People should think.

flypeter

  • ****
  • Wiadomości: 415
  • Miejsce pobytu:
    KUJ-POM
Odp: Interpretery BASIC na różne platformy - test wydajnościowy
« Odpowiedź #56 dnia: 2015.12.01, 21:50:11 »
C+4 - 2:16
ZX81, ZX 48k/+/128+2/2A/+3, QL, TC 2048, UK2086, Harlequin | Atari 8/16-bit | Commodore 8/16-bit | CPC | MSX | TI99/4 | Acorn Electron, BBC Master Compact | Mac Classic, PowerMac 6100, Apple II+ | Elwro 800 Junior | Meritum | Robotron A5105 | Oric-1 | 8088/80286/80386/80486/Pentium I-IV

Rzeznik

  • *****
  • Wiadomości: 2134
  • Miejsce pobytu:
    Katowice
Odp: Interpretery BASIC na różne platformy - test wydajnościowy
« Odpowiedź #57 dnia: 2015.12.01, 22:12:31 »
Amiga 500 - Microsoft Basic 1.0 - 0:30 (sprawdziłem w winuae, konf-stock a500)


matofesi

  • *****
  • Wiadomości: 2048
  • Miejsce pobytu:
    Toruń/Poland
Odp: Interpretery BASIC na różne platformy - test wydajnościowy
« Odpowiedź #58 dnia: 2015.12.02, 08:28:29 »
No to jeszcze odpaliłem Port BBC BASIC'a na Spectrum (http://mdfs.net/Software/Spectrum/BBCBasic/) - 1:22

flypeter

  • ****
  • Wiadomości: 415
  • Miejsce pobytu:
    KUJ-POM
Odp: Interpretery BASIC na różne platformy - test wydajnościowy
« Odpowiedź #59 dnia: 2015.12.02, 09:52:12 »
ZX81 - 13:12

Po małej zmianie, by wyświetlał wynik jeden po drugim, bo bez tej zmieny przerywał program jak miał przewinąc ekran. Ale w przypadku ZX81 nie chyba się co dziwić, bo proceosr generuje też obraz...
ZX81, ZX 48k/+/128+2/2A/+3, QL, TC 2048, UK2086, Harlequin | Atari 8/16-bit | Commodore 8/16-bit | CPC | MSX | TI99/4 | Acorn Electron, BBC Master Compact | Mac Classic, PowerMac 6100, Apple II+ | Elwro 800 Junior | Meritum | Robotron A5105 | Oric-1 | 8088/80286/80386/80486/Pentium I-IV