Jaký je rozdíl od Web View!

Pamatujte, že v prosinci 2016 jsem zmínil, že pracuji na faux emulátoru pro auto, které nikdy neexistovalo. Věci se od té doby vyvinuly a Retroputer má nyní plně funkční sestavovací sestavu. Shromáždění "jazyk, podpora vstupu / výstupu (například pomocí klávesnice) a velmi jednoduchý" boot bar "ROM (což je podle mého názoru pěkné nastavit počáteční konfiguraci obrazovky a dokonce definovat počáteční barevnou paletu) ) “.

Nyní Retroputer nikdy nekončí (možná to nikdy nebude - je to projekt pro volný čas a je zábavné dělat housle). Samotný tento herní materiál je něco, co může být nakonec použito jako výukový nástroj, ale to neznamená, že může být použito k prokázání některých rozdílů v technologických základech.

Kód za retroputerem není příliš komplikovaný, ale napodobuje GPU i procesory. GPU není něco srovnatelného s moderním GPU - „generátor videa“ je kompatibilnější. Je navržen tak, aby produkoval 24bitové barvy 320x200 šedesátkrát za sekundu pomocí dvou plátnů HTML5 (jedno je 320x200 a druhé pouze interní 320x200). Procesor je mnohem archaičtější než moderní procesory, ale i když neví o vícepásmových, vícejádrových nebo pohyblivých bodech, Turing je kompletní. Je třeba poznamenat, že procesor trvá zbývající čas po vykreslení obrazovky v prohlížeči.

Ne, ne, Retroputer nedělá složité trojrozměrné grafy ani výpočetní komplexní rovnice. Snaží se to však udělat rychle - pokud možno na 60 snímcích. Zbytek času po nakreslení obrazovky je věnován procesoru. To nám umožňuje vyvodit některé závěry o tom, jak pracovat napříč různými pohledy na web, protože webový pohled by měl vytvořit rychle se měnící obrázek a maximalizovat jedno jádro (JavaScript je jeden - ale ne-li jeden webový pracovník).

Stojí za povšimnutí, že výkon Retroputeru je velmi variabilní, v závislosti na konfiguraci obrazovky (Retroputer může podporovat složité personální uspořádání) a zpracování instrukcí, ale i nadále to děláme. jednoduché. Jde o to: vyplňte paměť obrazovky sbírkou znaků Retscii co nejdříve s nekonečnem ad. Kód montáže 6516 je velmi jednoduchý.

Většina mé každodenní práce zahrnuje práci s vývojáři mobilních hybridních softwarů, kteří používají především Apache Cordova. Cordova používá nativní webové zobrazení na cílové platformě ke spuštění zabaleného JavaScriptu, HTML a CSS a také podporuje plug-iny, které umožňují JavaScript používat nativní funkce zařízení.

Zařízení iOS měla po dlouhou dobu pouze jedno zobrazení webu: UIWebView. S příchodem iOS 8 byl představen nový webový pohled: WKWebView. U běžných aplikací si nemusíte všimnout rozdílu mezi nimi. Existuje však mnoho variant, přinejmenším ne JavaScript engine.

JavaScript ve WKWebView je právě zabudován v průběhu času, což často zlepšuje výkon vašich aplikací, zejména prostřednictvím opakujících se kódových cest. UIWebView nic z toho nedělá a je to velmi pomalé. Rozdíl je obvykle třikrát rychlejší než WKWebView než UIWebView, i když scénáře reálného světa tyto výsledky mírně mění.

Pravděpodobně to, na co chcete přijít: Jak rychle retroputer běží tuto jednoduchou aplikaci na zařízení iOS (v mém případě model iPad Pro 12,9 palce) ve srovnání s tím, co se děje v UIWebView pomocí WKWebView? Pokud ano, máte naprostou pravdu. Dokonce jsem o tom udělal rychlé a krátké video.

Rozdíl je, řekněme. Zaprvé, výkon UIWebView je zcela neobvyklý. Myslím, že vidíš, že emulátor zobrazuje několik sekund znaky. Za druhé, Retroputer nedosáhne šedesát čtverečních stop, bez ohledu na to, kolik sekund. Retroputer spravuje 41 snímků za sekundu a provádí pouze 100 instrukcí za snímek, což je přibližně 0,0041 MIPS nebo miliony instrukcí za sekundu.

Abych uvedl toto číslo v kontextu, i můj oblíbený Commodore 64 dokáže ještě lépe. Podle Wikipedie zvládne 0,43 MIPS - o dva řády rychleji než případ UIWebView. Váš notebook dnes nabízí o několik řádů rychleji.

Později jsem experimentoval s WKWebView. Používání Mobile Safari dělá totéž, i když jsem byl přesvědčen, že čísla byla správná při používání iOS WKWebView (a jsou). Rozdíl je obrovský. Retroputer je schopen pracovat rychlostí 59 snímků za sekundu a má v průměru šedesát tisíc instrukcí na čtvereční stopu, což je asi 3,54 MIP. To samozřejmě není překvapivé ve srovnání s vaším notebookem, ale běží na 16,67 MHz Motorola 68010 a je plachý 1 MIPS i386DX na 33 MHz (opět podle Wikipedie).

Zde je naprosto absurdní kopírovat z UIWebView do WKWebView. Ve většině programů to samozřejmě není něco, co byste měli očekávat. WKWebView je schopen optimalizovat cesty kódu tak šíleně, jak je často vidí, a data, která jimi procházejí, se stanou celým číslem a jsou prováděny pouze jednoduché operace. Ale stejně je rozdíl obrovský!

Ale pak jsem se zeptal - kolik plátna může přispět k problému? Kromě kreslení vnitřního plátna na viditelné plátno je zde také mnoho kódu JavaScript, který je zodpovědný za rozhodování, které pixely se rozsvítí a které barvy je třeba malovat. Pokud je JavaScript pomalý, stojí za to náklady na zpracování času zjistit, co kreslit na plátně?

Takže jsem vypnul část obrazovky a ukázalo se, že odpočítávání na plátně trvá dlouho. Při použití UIWebView má tedy významný důsledek 0,0041 MIPS. UIWebView dokáže uchovat pouze 0,13 MIP, i když jsou výpočty obrazovky odstraněny. Ujistěte se, že je rychlejší než 0,0041, ale rychlejší než WKWebView (zvládne 4,24 MIP, když neaktualizuje plátno). Důvodem je to, že očekáváme, že UIWebView bude mít nízký výkon JavaScriptu a obnovovací frekvenci obrazovky, samozřejmě, JavaScript. V tomto případě je WKWebView 32krát rychlejší než UIWebView.

Nejnovější čísla ve formě tabulky pro usnadnění trávení:

Technicky je FPS vpravo zbytečné; Když funkce skončí asi 14 milisekund, považujte je za rovnocenné provedení funkce

Měl bych poznamenat, že nic z toho není vědeckým způsobem, formou ani formou. Je to trochu experiment a výsledky jsou velmi závislé na počátečním nastavení - v tomto případě je optimalizátor WKWebView nemodifikovaný emulátor, který může zářit díky velmi opakující se (a jednoduché) povaze provádění kódu Retroputer. Neměli byste očekávat tyto výsledky ve skutečném světě, ani by neměli. Dovolte mi to objasnit:

Neměli byste očekávat takové výsledky ve skutečném světě!

To však ukazuje, že nadace, kterou vytváříme, může v našem programu často hrát hlavní roli. U aplikací, které nejsou závislé na úrovních výkonu, uživatel nevidí velký rozdíl. Ale pro aplikace, které chtějí zasáhnout 60 snímků, například při rolování dlouhého seznamu je rozdíl patrný rychle a to může být docela v pohodě.

Postscript:

Pokud vás zajímá, můj iPhone 6 Retroputer je o něco pomalejší než iPad Pro (60 fps, ~ 2,85 MIP). Moje 15palcová MacBook Pro Retina (Intel) funguje od roku 2014 stejnou rychlostí jako iPad Pro (ARM). Zajímalo by mě, možná to ukazuje na budoucnost notebooků Apple? Dobře, takže můj MBP má více jader a emulátor není Photoshop nebo nějaký software pro 3D zpracování, ale co když iPad Pro má stejný počet vysoce výkonných jader? Hmm ...!