PC-01 Lviv

It is currently 28 Mar 2024, 13:37

Forum Games WEB Tape Loader Twitter RSS

All times are UTC+03:00




Post new topic  Reply to topic  [ 22 posts ]  Go to page 1 2 Next
Author Message
PostPosted: 09 Jul 2020, 12:18 
Offline

Joined: 18 May 2016, 19:55
Posts: 425
Когда-то, приблизительно год назад я занимался изучением быстродействия эмуляторов различных ретро-машин по контретной, простой как двери программе.
Запускал в различных эмуляторах (различных ретро-машин) вот такую программу:
Code:
200 b1=0:b2=0:CO=0
210 Print "Start..."
250 For b2=0 to 255
260 For b1=0 to 255
270 Next b1
280 Next b2
300 co=co+1:Print(co)
310 If co < 20 then Goto 250
320 Print"END."
Засекал время выполнения и делал заметки т.е. выводы по быстродействию (или может правильнее сказать по эффективности) различных эмуляторов (различных машин).
Почему я забросил эту тему и не выложил тогда, сейчас уже не вспомню. И вот я ее "нарыл" в "загашнике".
Весьма удивило быстродействие (эффективность) выполнения данной программы эмулятором "Atari800Win" по сравнению с другими эмуляторами. Посмотрите таблицу моих измерений выполнения программы различными эмуляторами. Может быть кто нибудь скажет мне почему "Atari800Win" "выглядит" не лучшим образом по сравнению з другими эмуляторами (компьютерами)?
Я не исключаю какого-то своего ошибочного измерения.
Постепенно пересмотрю весь архив и выложу файлы с программой (код) для различных эмуляторов, чтобы не набирать их вручную. Если у кого будет желания прошу проверить мою таблицу по данной программе или может быть предложить какие-то другие программы для измерения быстродействия (эффективности) различных эмуляторов (различных ретро-машин).


длительность выполнения 20 циклов (в секундах)/ средняя длительность виполнения 1 цикла (в секундах)
Code:
Агат-(3)Apple ][ Plus                  1817  /  90,85 
Башкирия(2017.12.01)- Орион-128"       1988  /  99,4
* Башкирия(2017.12.01)-Львов ПК-01     2224  /  111,2 
BK-0010_01                             2264  /  113,2
* SASemulator1.44Beta                  2279  /  113,95
Башкирия(2017.12.01)-MSX2              2415  /  120,75
Башкирия(2017.12.01)-MSX               2437  /  121,85
* Эмулятор 3000(v6.0)                  2494  /  124,7
blueMSX - MSX-2                        2569  /  128,45
Atari800Win                            2846  /  142,3
* LVOV105                              3862  /  193,1



Top
   
PostPosted: 09 Jul 2020, 13:10 
Offline

Joined: 18 May 2016, 19:55
Posts: 425
Бейсик-программа теста быстродействия
Code:
200 b1=0:b2=0:CO=0
210 Print "Start..."
250 For b2=0 to 255
260 For b1=0 to 255
270 Next b1
280 Next b2
300 co=co+1:Print(co)
310 If co < 20 then Goto 250
320 Print"END."
для различных эмуляторов (различных машин)
"01_Агат-(3)Apple ][ Plus-Basic"
"02_Башкирия(2017.12.01) - Орион-128"
"03_Башкирия(2017.12.01)-Львов ПК-01"
"04_Башкирия(2017.12.01)-BK-0010_01"
05_SASemulator1.44Beta
"06_Башкирия(2017.12.01)-MSX2"
"07_Башкирия(2017.12.01)-MSX"
"08_Эмулятор 3000(v6.0) - _ПК-01 Львов"
09_BlueMSX-Basic
10_ATARI
11_LVOV105
Attachment:
1.7z [141.25 KiB]
Downloaded 843 times


Top
   
PostPosted: 09 Jul 2020, 13:55 
Offline

Joined: 18 May 2016, 19:55
Posts: 425
Вот еще тестилка "в кодах" писанная
Attachment:
Test1.LVT [95 Bytes]
Downloaded 805 times
т.е. видимо такая же как для васика только для КР580.
Мнемонику асма-580 я толком не помню
поэтому "перековырял" исходник с МАДЛа в асм-580 и вот что получилось
(надеюсь понятно будет)
Code:
SetAddrRAM $8000 

T1:'START...   '+#13+#10+#0
T3:'END.   '+#13+#10+#0)


StartProgram:
T2:
LXI HL,T1
call $e4a4

LXI HL, $255

T5:
push HL
LXI HL, $FFFF

T4:
dcx HL

Mov A,H
Cpi $00
Jnz T4

Mov A,L
Cpi $00
Jnz $8025

Pop HL
Dcx HL

Mov A,H
Cpi $00
Jnz T5

Mov A,L
Cpi $00
Jnz T5

Lxi HL, T3
Call $E4A4 
JMP T2



Top
   
PostPosted: 09 Jul 2020, 15:00 
Offline

Joined: 18 May 2016, 19:55
Posts: 425
Программу Test1.LVT, SASemulator1.44Beta прокручивал 8 мин 3сек т.е. 483 сек но 255 циклов по 65536, т.е. 20 циклов равно 37,8823 сек, один цикл равен 1,8941 сек
Code:
SASemulator1.44Beta-Test1.LVT-ASM     37,8823 / 1,8941 
В среде Васика
Code:
* SASemulator1.44Beta                  2279  /  113,95
получается разница быстродействия Васика и асма в 60 раз!
Думал хотя бы в 30 раз! :D


Top
   
PostPosted: 11 Jul 2020, 13:47 
Offline

Joined: 18 May 2016, 19:55
Posts: 425
Аналогичные программы по измерению быстродействия для современных компьютеров
Attachment:
TestProg.7z [669.34 KiB]
Downloaded 812 times

Архив "TestProg.7z":

32bit:
D7Console.exe - скомплилированна Дельфи 7, консольный режим
D7FORM.exe - скомплилированна Дельфи 7, "форма"
fpc2_6_0_console.exe - скомпилирована Free Pascal 2.6.0
fpc3_0_4_console.exe - скомпилирована Free Pascal 3.0.4

16bit:
D1FORM - скомплилированна Дельфи 1, "форма"
1TP.EXE - скомпилирована Borland Pascal 7, Real mode Application
2TP.EXE - скомпилирована Borland Pascal 7, Protected mode Application
3TP.EXE - скомпилирована Borland Pascal 7, Windows Application

d7console.apk -скомпилирована PascalGUI 3.97 arm (ANDROID 4.4.2)

Все программы с исходниками.
Code:
Среда запуска                | что запущено       |  результат выполнения (в сек) 20 пунктов теста  / 1 пункт теста (в среднем)

WinXP(32bit)                 |    D7FORM.exe      | 110       /  5,5
WinXP(32bit)                 |    D7Console.exe   | 110-111   /  5,55
WinXP(32bit)                 |fpc2_6_0_console.exe| 336       /  16,8   
WinXP(32bit)                 |    1TP.EXE         | 455-460   /  23
WinXP(32bit)                 |    2TP.EXE         | 460-480   / 23-24
WinXP(32bit)                 |fpc3_0_4_console.exe| 506       /  25,3

WinXP(32bit)                 |    D1FORM.EXE      | 1520      /  76


WinXP(32bit)-DosBox-Win3.11  |    D1FORM.EXE     | 5220      / 259-263
WinXP(32bit)-DosBox-Win3.11  |    2TP.EXE        | 10260     / 513  
WinXP(32bit)-DosBox-Win3.11  |    1TP.EXE        | 10280     / 514

WinXP(32bit)-DosBox          |    1TP.EXE        | 10060     /  503
WinXP(32bit)-DosBox          |    2TP.EXE        | 9880      /  494

WinXP(32bit)                 |    3TP.EXE        | Не запускается
WinXP(32bit)-DosBox          |    3TP.EXE        | Не запускается
WinXP(32bit)-DosBox-Win3.11  |    3TP.EXE        | Не запускается



ANDROID 4.4.2:

Android-GUIpascal                 |   D7Console.pas   | 1200  /  60
Android-GUIpascal-в фоновом режиме|   D7Console.pas   | 1200  /  60
Android-APK-файл                  |   D7Console.APK   | 1200  /  60

Android-APK-файл-в режиме экран погашен |D7Console.APK| 1534  / 76,7

Android-MagicBox-Win3.11                |    D1FORM.EXE     | 17420  /  871

Android-MagicBox                        |    1TP.EXE        | 25200  / 1260

Android-MagicBox-Win3.11                |    1TP.EXE        | 25805  / 1290,25     

Android-(MagicBox-свёрнут)   |    1TP.EXE        | За 3,5 часа реакции никакой
Android-MagicBox(погашений   
екран кн. выкл.)             |    1TP.EXE        | За 50 минут реакции никакой
Android-MagicBox(не вх.в сис
но экран погашен             |    1TP.EXE        | реакции никакой


Top
   
PostPosted: 01 Aug 2020, 14:17 
Offline

Joined: 07 Dec 2010, 16:54
Posts: 227
Quote:
получается разница быстродействия Васика и асма в 60 раз! Думал хотя бы в 30 раз!
Всё честно. Из микро-компьютеров самым быстрым был Вильнюс-Бейсик на УК-НЦ, он компилировал программу в шитые коды. Вот этот бейсик в десятки (если не быстрее) раз уделывал по скорости Корветовский.

Если хочется тормозов всего лишь в несколько раз, то надо использовать компиляторы.


Top
   
PostPosted: 29 Apr 2021, 00:05 
Offline

Joined: 18 May 2016, 19:55
Posts: 425
Значит написал программу test1 для тестирования штуковины Зорко.
Attachment:
Test1.7z [420 Bytes]
Downloaded 745 times
Code:
(*$MAIN*) MODULE test1; IMPORT RK86;
VAR b1,b2,b3,CO:INT16;
BEGIN

RK86.PUTSTR("START");

FOR   b1:=0 TO  255 DO 
FOR   b2:=0 TO  255 DO 
FOR   b2:=0 TO  255 DO 
END;END;
RK86.PUTSTR("*");
END;

RK86.PUTSTR("END");

END test1.

Для переменных применял тип "INT16;" другие типы такие как SYSTEM.BYTE {0..255},INT8 {-128..127} что-то у меня пока не получилось!

Размер Test1.LVT - 95 байт - 22 "шапка" = 73 байта код
размер Test1.rk - 157 байт, не знаю сколько из них "шапка" РК86 !
Но по компиляции кода, думаю не плохо!

далее
Разница в быстродействии.
Test1.LVT = 8 мин 3сек = 483 сек
Test1.rk = 14 мин 48 сек =888 сек
Разница быстродействия асм и компилятора Зорко - 888/483 = 1,838 (т.е в два раза)
Насколько это хорошо или плохо, не берусь пока судить!
Думаю если хорошо (быстро) будут реализованы вывод спрайтов (на асме), то этой штуковине применение найти можно будет!
В целом впечатления пока не плохие! Далее, время покажет!

Из неудобств.
BEGIN, FOR, DO и прочее нужно писать обязательно все большими буквами, что очень не удобно и не привычно! :-(
Первое, что мне приходит в голову, это написать простейший конвертер, чтобы конвертировал мнемонику-Дельфи в мнемонику-Оберон и поменьше иметь "прямого" взаимодествия мнемоникой-Оберона!
На этом пока все!


Top
   
PostPosted: 29 Apr 2021, 01:32 
Offline

Joined: 20 Apr 2021, 05:09
Posts: 100
Quote:
(*$MAIN*) MODULE test1; IMPORT RK86;
IMPORT RK86, SYSTEM; (* <-- чтобы использовать SYSTEM.BYTE *)
Quote:
Размер Test1.LVT - 95 байт - 22 "шапка" = 73 байта код
Шапка там совсем небольшая. JMP на стартовую точку. И всё вроде.

FOR не готов для работы с переменной цикла типа SYSTEM.BYTE. Или юзай опцию -f (для диалекта -3). Но тогда FOR будет оберонский, а не наш, продвинутый. В смысле, нельзя будет FOR i := 0 TO 255
В Обероне FOR приравнивается к WHILE, т.е. будет развёрнут в i := 0; WHILE i <= 255 DO , а беззнаковый байт i всегда <= 255.
Мы сделали расширенную версию FOR, но поддержка беззнакового байта в ней ещё не до конца отлажена. Вообще поддержка беззнакового байта сделана не так давно.
Quote:
Из неудобств.
BEGIN, FOR, DO и прочее нужно писать обязательно все большими буквами, что очень не удобно и не привычно! :-(
Если начнёшь модуль словом module (с маленькой), то все ключевые слова тоже можно маленькими.


Top
   
PostPosted: 29 Apr 2021, 19:01 
Offline

Joined: 18 May 2016, 19:55
Posts: 425
Ошибочка то в моем коде была...
Дважды "FOR b2:=0 TO 255 DO ". Там где одна должна быть
"FOR b3:=0 TO 255 DO "

Вот новый вроде правильный, запускаю
Code:
(*$MAIN*) MODULE Test1RK86; IMPORT RK86;
VAR b1,b2,b3,CO:INT16;
BEGIN

RK86.PUTSTR("START");

FOR   b1:=0 TO  255 DO 
FOR   b2:=0 TO  255 DO 
FOR   b3:=0 TO  255 DO 
END;END;
RK86.PUTSTR("*");
END;

RK86.PUTSTR("END");

END Test1RK86.


Top
   
PostPosted: 29 Apr 2021, 19:20 
Offline

Joined: 18 May 2016, 19:55
Posts: 425
Результаты теста не сильно изменились аж странно... :shock:
Test1.rk = 15 мин 30 сек =930 сек
930/483 = 1,9254 (т.е в два раза)
Attachment:
Test1RK86.7z [425 Bytes]
Downloaded 754 times


Top
   
PostPosted: 29 Apr 2021, 19:52 
Offline

Joined: 18 May 2016, 19:55
Posts: 425
Тест для ПК-01
Code:
MODULE DemoLvov; (*$MAIN*)
IMPORT Lvov;
VAR b1,b2,b3,CO:INT16;
BEGIN
Lvov.LINE(1, 1,10,1, 3); (* типа старт ^-) *)

FOR   b1:=0 TO  255 DO 
FOR   b2:=0 TO  255 DO 
FOR   b3:=0 TO  255 DO 
END;END;
IF b1<200 THEN  Lvov.PSET( b1,10, 3); END;
IF b1>200 THEN CO:=b1-200; Lvov.PSET( CO,13, 3); END;
END;
Lvov.BOX(50, 50, 75, 75, 3);(* типа конец*)

  LOOP END
END DemoLvov.
Результаты теста
DemoLvov.lvt = 11 мин 58 сек = 718 сек
718/483 = 1,4865 (т.е в В ПОЛТОРА раза)
( в САС-емуляторе)
Attachment:
Test1LVOV.7z [1.8 KiB]
Downloaded 762 times
в архиве:
DemoLvov.lvt
DemoLvov.Mod
декомпиляция МАДЛ
"LVTtoMD01D(e)\Project.dpr"
"LVTtoMD01M(e)\Project.dpr"


Top
   
PostPosted: 30 Apr 2021, 18:37 
Offline

Joined: 18 May 2016, 19:55
Posts: 425
MADL vs K580Dev
Attachment:
TEST2.7Z [1.38 KiB]
Downloaded 746 times
K580Dev:
Исходник
Code:
MODULE DemoLvov; (*$MAIN*)
IMPORT Lvov;
VAR x,y:INT16;

BEGIN
x:=0;y:=0;
REPEAT
REPEAT
Lvov.PSET(x,y, 3);
x:=x+1;
UNTIL x=200;
x:=0; y:=y+1;
UNTIL y=225;


END DemoLvov.

K580Dev:
Декомпиляция:
Code:
{Дизкомпилированный файл: 'DemoLvov.lvt'}
{Формат LVT}
{ Начальный адрес: $0000 (0) }
{ Конечный адрес : $007F (127) }
{ Адрес старта   : $0000 (0) }

program Project; uses  uMD01u in 'uMD01u.pas';

VAR
L0000, L0003, L0007, L0010, L0056, L0065, L0067, L0069, L0072
:TLabelLV;

BEGIN
INITCompiler;

SetFullNameLVTfile('DemoLvov.lvt');
SetNameInternalKOI(#$44+#$65+#$6D+#$6F+#$4C+#$76);

SetAddrRAM($0000);

StartProgram;

LabelA(L0000);
Call(L0007);

LabelA(L0003);
JMP($F875);
DB($E9);

LabelA(L0007);
LxiHL(L0000);
Shld(L0065);
Shld(L0067);

LabelA(L0010);
Lhld(L0065);
MviH($00);
PushHL;
Lhld(L0067);
MviH($00);
PushHL;
LxiHL(L0003);
PushHL;
Call(L0056);
Lhld(L0065);
InxHL;
Shld(L0065);
Lhld(L0065);
LxiDE($00C8);
Call(L0072);
Call(L0069);
Jc(L0010);
LxiHL(L0000);
Shld(L0065);
Lhld(L0067);
InxHL;
Shld(L0067);
Lhld(L0067);
LxiDE($00E1);
Call(L0072);
Call(L0069);
Jc(L0010);
RET;

LabelA(L0056);
PopHL;
PopBC;
PopDE;
xtHL;
MovHE;
Shld($BE50);
MovAC;
Sta($BE52);
JMP($F821);

LabelA(L0065);
DB($00);
DB($00);

LabelA(L0067);
DB($00);
DB($00);

LabelA(L0069);
MovAH;
OraL;
LxiHL(L0000);
Rnz;
stc;
InrL;
RET;

LabelA(L0072);
MovAL;
SubE;
MovLA;
MovAH;
SbbD;
MovHA;
OraL;
InxHL;
stc;
Rz;
XraA;
MovLA;
MovHA;
RET;
FINALCompiler;
END.


МАДЛ (MD02):
Исходник:
Code:
Var x,y:TByteLV;
RepeatY,RepeatX,ENDc:TLabelGLV;

BEGIN
INITCompiler;

VarByte(x,'x',0);VarByte(y,'y',0);

StartProgram;

Ar(3);mrA($BE52);
LabelG(RepeatY); Ar(y);mrA($BE51);
LabelG(RepeatX); Ar(x);mrA($BE50);

Call($F821);

p(X,1);IfisNot(X,200,RepeatX);
r(x,0);p(Y,1);IfisNot(Y,225,RepeatY);

LabelG(ENDc);Goto_(ENDc);


FINALCompiler;
END.

МАДЛ:
Декомпиляция:
Code:
{Дизкомпилированный файл: '_res.LVT'}
{Формат LVT}
{ Начальный адрес: $0000 (0) }
{ Конечный адрес : $003B (59) }
{ Адрес старта   : $0002 (2) }

program Project; uses  uMD01u in 'uMD01u.pas';

VAR
L0000, L0001, L0007, L000D, L0039
:TLabelLV;

BEGIN
INITCompiler;

SetFullNameLVTfile('_res.LVT');
SetNameInternalKOI(#$20+#$20+#$20+#$20+#$20+#$20);

SetAddrRAM($0000);

LabelA(L0000);
DB($00);

LabelA(L0001);
DB($00);

StartProgram;
MviA($03);
Sta($BE52);

LabelA(L0007);
Lda(L0001);
Sta($BE51);

LabelA(L000D);
Lda(L0000);
Sta($BE50);
Call($F821);
Lda(L0000);
InrA;
Sta(L0000);
Lda(L0000);
Cpi($C8);
Jnz(L000D);
MviA($00);
Sta(L0000);
Lda(L0001);
InrA;
Sta(L0001);
Lda(L0001);
Cpi($E1);
Jnz(L0007);

LabelA(L0039);
JMP(L0039);
FINALCompiler;
END.

K580Dev:
Размер ЛВТ-файла - 150 байта
Время выполнения - 20-21 сек
Без возможности оптимизации!

MADL2021:
Размер ЛВТ-файла - 82 байта
Время выполнения - 14-15 сек
С возможностями оптимизации!


Top
   
PostPosted: 01 May 2021, 21:04 
Offline

Joined: 20 Apr 2021, 05:09
Posts: 100
Да, чего-то подобного я опасался. Подгорание пукана и сравнение тёплого с мягким.
Ты ещё брэйнфак забыл добавить в список для сравнения.


Top
   
PostPosted: 02 Nov 2022, 15:40 
Offline

Joined: 18 May 2016, 19:55
Posts: 425
Тестування програми:
Code:
200 b1=0
201 b2=0
203 CO=0
210 Print "Start..."
250 For b2=0 to 255
260 For b1=0 to 255
270 Next b1
280 Next b2
300 co=co+1
301 Print(co)
310 If co < 20 then Goto 250
320 Print"END"
в емуляторах:
1. Эмулятор БК 0010(01) для Windows 98/ME/2000/XP версия 2.6,
(посилання не зберіг, скоріш за все десь там же де й версія 3.0)
2. Эмулятор БК 0010(01) для Windows 98/ME/2000/XP версия 3.0,
https://archive.org/details/bk-emulator-calm ,
( звантажив звідси: https://archive.org/download/bk-emulato ... or_v30.zip _
Файл тест-програми :TestSpeed.msf

3. BkEmu.1.0.0 (автор:3cky),
https://github.com/3cky/bkemu-android
Файл тест-програми: TestSpeed.bkemu_state

Code:
WindowsXP - Эмулятор БК 0010(01).2.6  -  3020 / 151
WindowsXP - Эмулятор БК 0010(01).3.0 –   2960 / 148
Android7 - BkEmu.1.0.0 (3cky) —          2295 / 114,75
Android4 - BkEmu.1.0.0 (3cky) —          4651 / 232,55
Здивували показники виконання емуляторів під WindowsXP. Може у мене Windows такий, але ж все таки...
На Android4 — BkEmu взагалі повний “завал”.

В цілому, “картина” виглядає так:
Code:
Агат-(3)Apple ][ Plus                  1817  /  90,85 
Башкирия(2017.12.01)- Орион-128"       1988  /  99,4
* Башкирия(2017.12.01)-Львов ПК-01     2224  /  111,2 
BK-0010_01                             2264  /  113,2
* SASemulator1.44Beta                  2279  /  113,95
Android7 - BkEmu.1.0.0 (3cky) —        2295  /  114,75
Башкирия(2017.12.01)-MSX2              2415  /  120,75
Башкирия(2017.12.01)-MSX               2437  /  121,85
* Эмулятор 3000(v6.0)-Львов ПК-01      2494  /  124,7
blueMSX - MSX-2                        2569  /  128,45
Atari800Win                            2846  /  142,3
WindowsXP - Эмулятор БК 0010(01).3.0 – 2960  /  148
WindowsXP - Эмулятор БК 0010(01).2.6 - 3020  /  151
* LVOV105                              3862  /  193,1
Android4 - BkEmu.1.0.0 (3cky) —        4651  / 232,55
Attachment:
TESTSpeed.7z [26.46 KiB]
Downloaded 655 times


Top
   
PostPosted: 02 Nov 2022, 15:44 
Offline

Joined: 18 May 2016, 19:55
Posts: 425
Quote:
Всё честно. Из микро-компьютеров самым быстрым был Вильнюс-Бейсик на УК-НЦ, он компилировал программу в шитые коды. Вот этот бейсик в десятки (если не быстрее) раз уделывал по скорости Корветовский.
Если хочется тормозов всего лишь в несколько раз, то надо использовать компиляторы.
sadfsdfsdaf,
зверни увагу на попереднє повідомлення (тобто ось це - viewtopic.php?f=12&t=380&p=5689#p5689 ) щодо БК 0010(01), відверто кажучи здивован не в кращу сторону для БК 0010(01). Ти ж про цей "Вильнюс-Бейсик на УК-НЦ" казав чи я щось сплутав ?!


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 22 posts ]  Go to page 1 2 Next

Forum Games WEB Tape Loader Twitter RSS

All times are UTC+03:00


Who is online

Users browsing this forum: No registered users and 0 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
cron
Powered by phpBB® Forum Software © phpBB Limited