PC-01 Lviv http://pc01.lviv.ua/forum/ |
|
Быстродействие различных эмуляторов http://pc01.lviv.ua/forum/viewtopic.php?f=12&t=380 |
Page 1 of 2 |
Author: | als [ 09 Jul 2020, 12:18 ] |
Post subject: | Быстродействие различных эмуляторов |
Когда-то, приблизительно год назад я занимался изучением быстродействия эмуляторов различных ретро-машин по контретной, простой как двери программе. Запускал в различных эмуляторах (различных ретро-машин) вот такую программу: 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 |
Author: | als [ 09 Jul 2020, 13:10 ] |
Post subject: | Re: Быстродействие различных эмуляторов |
Бейсик-программа теста быстродействия 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:
|
Author: | als [ 09 Jul 2020, 13:55 ] |
Post subject: | Re: Быстродействие различных эмуляторов |
Вот еще тестилка "в кодах" писанная Attachment:
т.е. видимо такая же как для васика только для КР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 |
Author: | als [ 09 Jul 2020, 15:00 ] |
Post subject: | Re: Быстродействие различных эмуляторов |
Программу 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 раз! |
Author: | als [ 11 Jul 2020, 13:47 ] |
Post subject: | Re: Быстродействие различных эмуляторов |
Аналогичные программы по измерению быстродействия для современных компьютеров Attachment:
Архив "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 | реакции никакой |
Author: | sadfsdfsdaf [ 01 Aug 2020, 14:17 ] |
Post subject: | Re: Быстродействие различных эмуляторов |
Quote: получается разница быстродействия Васика и асма в 60 раз! Думал хотя бы в 30 раз!
Всё честно. Из микро-компьютеров самым быстрым был Вильнюс-Бейсик на УК-НЦ, он компилировал программу в шитые коды. Вот этот бейсик в десятки (если не быстрее) раз уделывал по скорости Корветовский.Если хочется тормозов всего лишь в несколько раз, то надо использовать компиляторы. |
Author: | als [ 29 Apr 2021, 00:05 ] |
Post subject: | Re: Быстродействие различных эмуляторов |
Значит написал программу test1 для тестирования штуковины Зорко. Attachment:
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 и прочее нужно писать обязательно все большими буквами, что очень не удобно и не привычно! Первое, что мне приходит в голову, это написать простейший конвертер, чтобы конвертировал мнемонику-Дельфи в мнемонику-Оберон и поменьше иметь "прямого" взаимодествия мнемоникой-Оберона! На этом пока все! |
Author: | Zorko [ 29 Apr 2021, 01:32 ] |
Post subject: | Re: Быстродействие различных эмуляторов |
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: Из неудобств. Если начнёшь модуль словом module (с маленькой), то все ключевые слова тоже можно маленькими.
BEGIN, FOR, DO и прочее нужно писать обязательно все большими буквами, что очень не удобно и не привычно! |
Author: | als [ 29 Apr 2021, 19:01 ] |
Post subject: | Re: Быстродействие различных эмуляторов |
Ошибочка то в моем коде была... Дважды "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. |
Author: | als [ 29 Apr 2021, 19:20 ] |
Post subject: | Re: Быстродействие различных эмуляторов |
Результаты теста не сильно изменились аж странно... Test1.rk = 15 мин 30 сек =930 сек 930/483 = 1,9254 (т.е в два раза) Attachment:
|
Author: | als [ 29 Apr 2021, 19:52 ] |
Post subject: | Re: Быстродействие различных эмуляторов |
Тест для ПК-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:
в архиве:DemoLvov.lvt DemoLvov.Mod декомпиляция МАДЛ "LVTtoMD01D(e)\Project.dpr" "LVTtoMD01M(e)\Project.dpr" |
Author: | als [ 30 Apr 2021, 18:37 ] |
Post subject: | Re: Быстродействие различных эмуляторов |
MADL vs K580Dev Attachment:
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 сек С возможностями оптимизации! |
Author: | Zorko [ 01 May 2021, 21:04 ] |
Post subject: | Re: Быстродействие различных эмуляторов |
Да, чего-то подобного я опасался. Подгорание пукана и сравнение тёплого с мягким. Ты ещё брэйнфак забыл добавить в список для сравнения. |
Author: | als [ 02 Nov 2022, 15:40 ] |
Post subject: | Re: Быстродействие различных эмуляторов |
Тестування програми: 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:
|
Author: | als [ 02 Nov 2022, 15:44 ] |
Post subject: | Re: Быстродействие различных эмуляторов |
Quote:
Всё честно. Из микро-компьютеров самым быстрым был Вильнюс-Бейсик на УК-НЦ, он компилировал программу в шитые коды. Вот этот бейсик в десятки (если не быстрее) раз уделывал по скорости Корветовский.
sadfsdfsdaf,Если хочется тормозов всего лишь в несколько раз, то надо использовать компиляторы. зверни увагу на попереднє повідомлення (тобто ось це - viewtopic.php?f=12&t=380&p=5689#p5689 ) щодо БК 0010(01), відверто кажучи здивован не в кращу сторону для БК 0010(01). Ти ж про цей "Вильнюс-Бейсик на УК-НЦ" казав чи я щось сплутав ?! |
Page 1 of 2 | All times are UTC+03:00 |
Powered by phpBB® Forum Software © phpBB Limited https://www.phpbb.com/ |