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

ZbyniuR

  • *****
  • Wiadomości: 2572
  • Miejsce pobytu:
    Carlisle w UK
  • CPC AGA PSX
Odp: Interpretery BASIC na różne platformy - test wydajnościowy
« Odpowiedź #15 dnia: 2014.08.01, 17:19:50 »
Myślę że jakieś różnice muszą jednak być. ZX XE i C64 mają po ok 80 komend a CPC ok 160.
Ciekawe co takiego ma C64 czego nie ma np ZX skoro ma nie mniej komend a jak wiemy brakuje w nich parunastu rozkazów do grafy i dźwięku. W CPC mimo tylu komend brakuje CIRCLE trzeba to zastępować sekwencją FOR DRAW SIN COS NEXT. A w 464 brak także FILL. Za to są takie jak pętla warunkowa WHILE WEND, Do IF THEN dodano ELSE, obsługa przerwań AFTER EVERY EI DI, do numeracji linii AUTO i RENUM, do śledzenia przebiegu programu TRON TROFF, do ustawiania przerywanych linii MASK. Drugi kursor kopiujący to też specyfika CPC i BBC.
Ostatnio czytałem że XE jest wolny bo stale używa zmiennych zmiennoprzecinkowych. I myślę że takich ciekawostek wyszłoby na jaw więcej przy pracach nad taką tabelką tłumaczącą i takimi testami jakie proponuję. A C64 ma polecenie TIME ale nie wiem co robi. :)

Oki dodaję linijkę sypiącą tekstami   x$="QWERTYUIOP ASDFGHJKL ZXCVBNM":t=TIME:FOR a=1 TO 200:PRINT x$:NEXT:t2=TIME:PRINT"print"(t2-t)/300

Poszedłem na łatwiznę przyznaję. Ech ta moja skłonność do upychania wszystkiego co się da w jedną linię. Lepiej by przetestował prędkość PRINTów ciąg PRINTów bez pętli i zmiennych. I podaję wyniki z emulatora CPC. Wszystko w MODE 1. :)

Samo  t=TIME:t2=TIME:PRINT t2-t    daje wynik 1, a przypominam że to 1/300 sekundy. To tyle na temat precyzji pomiaru. Stwierdziłem też że zmiany tępa działania emulacji nie wpływały na wyniki.

PRINT - 23.40  (wersja z IF THEN zamiast FOR NEXT wyszła ciut wolniej bo 23.46 może przez to że po TIME musiał przejść do następnej linijki a nie tylko "minąć" dwukropek) (w mode 0 wyszło 35s cóż tu litera zajmuje 2 razy tyle bajtów na ekranie i musi częściej skrolować ekran bo taki długi napis się nie mieści w linijce, za to w a mode 2 - 11s to tak poza konkursem) ;)

PEEK-POKE - 9.18 (przypominam przerzuca 4KB bajt po bajcie w nowe miejsce)

LOAD 16KB - na pustym dysku po kilku próbach najszybciej - 0.84, najwolniej - 1.20 (trzeba by to sprawdzić na prawdziwym sprzęcie)

PLOT-DRAW - 20.96 (w mode 0 - 13.27 a w mode 2 - 29.23, zaskoczyło mnie że szerokimi pikselami rysuje szybciej, za to w mode 2 jak zmniejszę poziome współrzędne o połowę by wzór był piksel w piksel jak w mode 1 to czas jest taki jak w mode 1) :)

PLOT-DRAWR - 21.18 (przypominam komenda DRAWR odpowiada DRAW w ZX, a wcześniejsza DRAW z CPC to odpowiednik DRAWTO w XE)

Trzeba by jeszcze dopisać kod mieszający zmiennymi i wykonujący obliczenia w tym i te najwolniejsze jak SIN i COS. Bo to istotna część programów w Basicach. Cóż kiedyś mnie złapie natchnienie, albo ktoś z forumowiczów coś zaproponuje.

Czekam na wyniki testów z innych platform, a potem pokomentujemy różnice i pomyślimy jak i o ile da się poprawić wyniki stosując jakieś wspomagacze. :)

TREK is better than WARS.. ;)

dely

  • ***
  • Wiadomości: 139
  • Miejsce pobytu:
    Radom
  • Trzcinowy Zakapior
    • atari.area
Odp: Interpretery BASIC na różne platformy - test wydajnościowy
« Odpowiedź #16 dnia: 2014.08.01, 19:00:28 »
POINT - zwraca stan pixela  (1 lub 0) w podanym miejscu.
W ATARI BASIC POINT ustawia głowicę stacji dysków nad określonym sektorem i bajtem :) POINT #kanal,sektor,bajt.
Z drugiej strony barykady ~ http://www.atari.org.pl/

Phonex

  • *****
  • Wiadomości: 1101
  • Miejsce pobytu:
    Warszawa
Odp: Interpretery BASIC na różne platformy - test wydajnościowy
« Odpowiedź #17 dnia: 2014.08.01, 20:27:41 »
W Spectrum z podłączoną stacją dysków OPUS Discovery, też ma inne zastosowanie. POINT #kan, n ustawia wskaźnik na n-ty bajt pliku, otwartego w kanale kan.

RafalM

  • *****
  • Wiadomości: 1133
  • Miejsce pobytu:
    Sulejówek
Odp: Interpretery BASIC na różne platformy - test wydajnościowy
« Odpowiedź #18 dnia: 2014.08.01, 20:38:53 »
Cytuj
Ciekawe co takiego ma C64 czego nie ma np ZX skoro ma nie mniej komend a jak wiemy brakuje w nich parunastu rozkazów do grafy i dźwięku. W CPC mimo tylu komend brakuje CIRCLE trzeba to zastępować sekwencją FOR DRAW SIN COS NEXT. A w 464 brak także FILL. Za to są takie jak pętla warunkowa WHILE WEND, Do IF THEN dodano ELSE, obsługa przerwań AFTER EVERY EI DI, do numeracji linii AUTO i RENUM, do śledzenia przebiegu programu TRON TROFF,

Basic dla Spectrum ma CIRCLE ale bardzo kiepsko zaimplementowane. Istnieje tkz. algorytm Bresenhama do rysowania kół operujący na prostych operacjach na liczbach całkowitych i każdy normalny program tego używa. Tymczasem Spectrum do rysowania koła używa sinusów a do liczenia sinusów używa ułamków. Efekt - zamiast np. 0.1 sekundy koło się rysuje np 2 sekundy - 20 razy wolniej.

FILL- rozumiem że wypełnienie zamkniętego obszaru. Spectrum niestety nie ma tego w ogóle.

Nie ma też jakichś WHILE, DO WHILE, UNTIL itp ale to najmniejszy problem bo zawsze można to zastąpić przez IF i GOTO

ZbyniuR

  • *****
  • Wiadomości: 2572
  • Miejsce pobytu:
    Carlisle w UK
  • CPC AGA PSX
Odp: Interpretery BASIC na różne platformy - test wydajnościowy
« Odpowiedź #19 dnia: 2014.08.06, 15:08:44 »
W Bajtku 4-1988 na str 14 jest tekst o porównaniu prędkości kilku Basiców na Atari XL/XE. W tym także podano sposób jak mierzyć czas wykonywania się programu, a więc wystarczy przed fragmentem programu który chcemy zmierzyć wpisać  POKE 19,0:POKE 20,0  a po tym fragmencie  t=PEEK(20)+PEEK(19)*256:PRINT t   
Tyle że jednostką czasu jakiej się tam używa jest takt zegara co wydaje mi się mało wiarygodne i nie wiem jak to się ma do sekundy. Ale może ktoś to rozgryzie. :)

Natomiast jak wyczytałem w  http://www.c64-wiki.com/index.php/TIME  Zmienna TIME w C64 działa tak samo jak w CPC z tą różnicą że tu na sekundę przypada 60 taktów a nie 300 jak w CPC. Czyli by coś zmierzyć na początku danej procedury piszemy  t=TIME  a na końcu  t2=TIME:PRINT (t2-t)/60   i mamy wynik w sekundach. :)

A speców od Spectruma tu nie brakuje więc czekam na wyniki. :)
TREK is better than WARS.. ;)

sect0r

  • *****
  • Wiadomości: 698
  • Miejsce pobytu:
    Oltedal/NO
  • speccyholic
Odp: Interpretery BASIC na różne platformy - test wydajnościowy
« Odpowiedź #20 dnia: 2014.08.06, 21:12:41 »
Takie małe porównanie na temat programowania c64 i ZX Spectrum http://www.eurogamer.net/articles/digitalfoundry-face-off-zx-spectrum-vs-commodore-64
Jak widać jest kilka aspektów w ktorych ZX radzi sobie lepiej niż C64 ;D
PS. Zasiekiste demko znalazłem w komentarzach do arta https://www.youtube.com/watch?v=7KegY8YIzQ4#t=136
« Ostatnia zmiana: 2014.08.06, 21:24:36 wysłana przez sect0r »
Szarak # DivIDE+ # MasakratorFM DeluXe by Zaxon

RafalM

  • *****
  • Wiadomości: 1133
  • Miejsce pobytu:
    Sulejówek
Odp: Interpretery BASIC na różne platformy - test wydajnościowy
« Odpowiedź #21 dnia: 2014.08.06, 22:35:59 »
Cytuj
PS. Zasiekiste demko znalazłem w komentarzach do arta https://www.youtube.com/watch?v=7KegY8YIzQ4#t=136

Owszem, Pimp my Spectrum jest fajne,  tylko to demo na PC :)

Słyszałem już o nim wcześniej. Ludzie napisali jakiś minimalistyczny emulator Spectruma, potem napisali pod niego demo, ustawili szybkość emulatora powiedzmy na 1000% i wypuścili całość jako jeden plik .exe na PC. Wszystko w 64 kilobajtach.

Inaczej mówiąc te efekty działałyby na Spectrum tylko kilka razy wolniej.

sect0r

  • *****
  • Wiadomości: 698
  • Miejsce pobytu:
    Oltedal/NO
  • speccyholic
Odp: Interpretery BASIC na różne platformy - test wydajnościowy
« Odpowiedź #22 dnia: 2014.08.07, 07:44:58 »
Ważne, że w spektrumowym klimacie  ;)
Szarak # DivIDE+ # MasakratorFM DeluXe by Zaxon

ZbyniuR

  • *****
  • Wiadomości: 2572
  • Miejsce pobytu:
    Carlisle w UK
  • CPC AGA PSX
Odp: Interpretery BASIC na różne platformy - test wydajnościowy
« Odpowiedź #23 dnia: 2014.08.07, 14:20:08 »
Parę lat temu pewien koleś napisał na PC strzelankę  Cosmic Prison Commando  która wygląda jak na CPC.
http://www.pixelprospector.com/wp-content/uploads/2011/07/screenshot-cosmic-prison-commando.png
Demko można znaleźć w sieci. Klimat coś a`la Turican. A ostatnio pracuje nad przeniesieniem tego na CPC. Grafa już gotowa tylko kod napisać i jakoś to w pamięci pomieścić. Ale się męczy bo raczej w C pisuje, a to mało przydatne do wyciskania potów z Amstrada.

To co nie ma chętnych na porównanie prędkości komputerów? Czy czasu nie mają? :(
TREK is better than WARS.. ;)

sect0r

  • *****
  • Wiadomości: 698
  • Miejsce pobytu:
    Oltedal/NO
  • speccyholic
Odp: Interpretery BASIC na różne platformy - test wydajnościowy
« Odpowiedź #24 dnia: 2014.08.07, 16:29:49 »
Wiadomo, że CPC zgarnie wszystkie nagrody  :o
Szarak # DivIDE+ # MasakratorFM DeluXe by Zaxon

Sir David

  • ****
  • Wiadomości: 319
  • Miejsce pobytu:
    Białystok
Odp: Interpretery BASIC na różne platformy - test wydajnościowy
« Odpowiedź #25 dnia: 2014.08.07, 17:34:39 »
Jeżeli w szranki stanąłby też Sam Coupe, to nie byłbym taki pewien  :P
Gry napisane w Basicu całkiem nieźle śmigają.

ZbyniuR

  • *****
  • Wiadomości: 2572
  • Miejsce pobytu:
    Carlisle w UK
  • CPC AGA PSX
Odp: Interpretery BASIC na różne platformy - test wydajnościowy
« Odpowiedź #26 dnia: 2014.08.07, 19:21:30 »
A ja bym się założył że nie będzie jednego faworyta w wszystkich konkurencjach. CPC w kreskowaniu i printowaniu ma po 2 bity na piksel więc w tych dwóch raczej nie ma szans. Zresztą że tak powiem goły Basic to tylko wstęp, a potem możemy potestować jakieś Turbosy czy kompilatory, i wcześniejsi wygrani dostaną po du.. tzn po kwarcach. :)
TREK is better than WARS.. ;)

ZbyniuR

  • *****
  • Wiadomości: 2572
  • Miejsce pobytu:
    Carlisle w UK
  • CPC AGA PSX
Odp: Interpretery BASIC na różne platformy - test wydajnościowy
« Odpowiedź #27 dnia: 2014.08.20, 23:26:40 »
Nie napisałem jeszcze testu na sortowanie, bo kolejny rocznik Bajtków przetwarzam na DSK, ale zrobiłem ponownie testy na CPC po wcześniejszym uruchomieniu "dopalaczy", procedur na szybkie printowanie i szybszą stację wzięte z Bajtka 9-92s18.

LOAD 16KB: normalnie było od 0.84s do 1.20s, a z turbo od 0.74 do 1.03. Czyli różnica niewielka, ale ta procedura nie zmienia prędkości transferu danych a jedynie skraca pauzy między przesuwami głowicy oraz odczytem poszczególnych sektorów, gdyż standardowe są tak wolne by działały nawet na stacjach z lat 70ych, oba testy robiłem na pustym dysku a założyłbym się że na pełniejszym gdzie więcej musi ruszać głowicą różnica byłaby większa. :)

PRINT: normalnie 23.4s, a w turbo 15.65s  (w mode 0 z 35s na 23.5s, a mode 2 z 11s na 7.6s). Nieźle nieźle. Pozostałe oczywiście bez zmian. :)

A teraz dodanie dodatkowego ROM o nazwie X-DDOS20.ROM  popularniejszego w Niemczech od Paradosa poprawia między innymi "Printowanie"....
Uuuu lala.  test PRINT: w mode 0 - 19.4s!, w mode 2 - 7.5s czyli ciut lepiej niż z Bajtka, a mode 1 - dziwne bo wynik nie za każdym razem jest identyczny, ale waha się pomiędzy 7.86 a 7.90 sekund!  Noo spadły mi kapcie. To prawie tak szybko jak w szybszym Mode 2 i aż 3 razy szybciej niż normalnie w mode 1. :D

W Komputerze i IKSie też są jakieś dopalacze których jeszcze nie wklepałem. No i trzeba by się kiedyś za jakieś kompilatory zabrać. ;)
Nie tracę nadziei że kiedyś poda wyniki ktoś z innej platformy. ;)


Testowałem kiedyś na emulatorze FutureOS  alternatywny nowy wypasiony OS dla CPC, rodem z Francji (konkurencja dla niemieckiego SymbOSa). I w przeciwieństwie do tego ostatniego nie ma wersji demo działającej z dysku a trzeba podłączyć prawdziwe lub emulowane ROMy. I uruchamiałem pod tym FOS jakieś animki 3D ściągnięte z norweskiego FTP. Zdumiało mnie że CPC potrafi wyświetlać całoekranowe cieniowane obracające się obiekty 3D. Ostatnio trafiłem na animkę w YT jednego z tych obiektów, (niestety kiepskiej jakości przez co nie wygląda tak imponująco).
Jest w końcowym 1/3 filmiku. https://www.youtube.com/watch?v=XIeUEqPZ-04  Mała rozdziałka i strasznie duży stopień kompresji.

I wyczytałem że to jest zrobione ze znaków które FutureOS potrafi w Mode 2 wyświetlać w tempie 23 tysiące na sekundę. Ja tu się jaram że test z 5600 znaków wykonuje się niecałe w 8 sek a fizyczną granicą jest takie coś?  Idę po valium. ;)

A tu jeszcze przykład przewijania obrazka co ma 64KB w pamięci ekranu co ma 16KB. https://www.youtube.com/watch?v=l3lqJ60pQr4

PS.: Sir David to kiedy mogę się spodziewać że podasz wyniki ze Sama? :)
TREK is better than WARS.. ;)

ZbyniuR

  • *****
  • Wiadomości: 2572
  • Miejsce pobytu:
    Carlisle w UK
  • CPC AGA PSX
Odp: Interpretery BASIC na różne platformy - test wydajnościowy
« Odpowiedź #28 dnia: 2014.08.28, 18:31:09 »
Jestem przygnębiony i zazdrosny. ;)  Żyłem sobie w błogiej nieświadomości aż zobaczyłem to:
https://www.youtube.com/watch?v=Htx6-FF-5Cw
To dwie godziny filmików z - C64 Nuvie Player - 16MB pliki .reu - na 1541 Ultimate II. Trwają zależnie od płynności od 1 do 3 minut. Wprawdzie zabawka kosztuje aż 150 Euro, ale raczej bym nie dał tyle nawet gdyby to było do CPC....


TREK is better than WARS.. ;)

Tygrys

  • Administrator
  • *****
  • Wiadomości: 3924
  • Miejsce pobytu:
    Warszawa
  • mistrz ceremonii
Odp: Interpretery BASIC na różne platformy - test wydajnościowy
« Odpowiedź #29 dnia: 2014.08.28, 18:36:31 »
Bo Ultimate 1541 to fajna zabawka.
Mam taką, da się oglądać dema, bo ten interface na FPGA w pełni emuluje stacje dysków (wraz z procesorem).