abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
dnes 15:33 | Zajímavý článek

Sergio Prado v článku Jak se testuje jádro Linux? poskytuje přehled nástrojů používaných právě k testování Linuxu, a to v oblastech statické analýzy kódu, automatizovaného testování a průběžné integrace.

Fluttershy, yay! | Komentářů: 0
dnes 15:22 | Nová verze

Byla vydána verze 0.20.0 open source počítačového planetária Stellarium (Wikipedie). Proběhlo refaktorování kódu. Vylepšeno bylo GUI. Vyzkoušet lze webovou verzi Stellarium Web.

Ladislav Hagara | Komentářů: 0
dnes 07:00 | Nová verze

Byla vydána verze 0.5.5 klienta open source herní platformy pro Linux Lutris (Wikipedie). Přehled novinek na GitHubu. Zmínit lze například počáteční podporu Humble Bundle.

Ladislav Hagara | Komentářů: 0
dnes 06:00 | Nová verze

Po 9 týdnech vývoje od vydání Linuxu 5.5 oznámil Linus Torvalds vydání Linuxu 5.6 (LKML). Přehled nových vlastností a vylepšení na stránkách LWN.net (1, 2) a Linux Kernel Newbies. Zdůraznit lze začlenění WireGuardu. Kódové jméno Linuxu 5.6 zůstává Kleptomaniac Octopus.

Ladislav Hagara | Komentářů: 9
včera 19:33 | Nová verze

Byla vydána nová major verze 2.9.0 multiplatformního svobodného frameworku pro zpracování obrazu G'MIC (GREYC's Magic for Image Computing, Wikipedie). Přehled novinek i s náhledy na PIXLS.US. Zmínit lze například generování moaré animací. Ukázka na YouTube.

Ladislav Hagara | Komentářů: 0
28.3. 17:33 | Zajímavý článek

Nová čísla časopisů od nakladatelství Raspberry Pi: MagPi 91 (pdf) a 92 (pdf), HackSpace 29 (pdf), Hello World 12 (pdf), Wireframe 33 (pdf), 34 (pdf) a 35 (pdf).

Ladislav Hagara | Komentářů: 1
28.3. 16:11 | IT novinky

Společnost FriendlyElec začala prodávat svůj nejnovější miniaturní jednodeskový počítač NanoPi R2S. Počítač v ceně 22 dolarů zaujme především dvěma Gigabit Ethernet porty.

Ladislav Hagara | Komentářů: 38
27.3. 07:00 | Zajímavý článek

David Malcolm se ve svém příspěvku na blogu vývojářů Red Hatu rozepsal o statické analýze a nové volbě -fanalyzer v GCC 10. Ukázkové příklady lze vyzkoušet také online na stránce Compiler Explorer.

Ladislav Hagara | Komentářů: 1
26.3. 20:22 | IT novinky

Český hydrometeorologický ústav doposud poskytoval data z meteorologických měření pouze za úplatu, přestože jde o veřejnou instituci. Dlouhodobě se tím zabýval Jan Cibulka, datový novinář Českého rozhlasu. Dosavadní praxe se však nyní mění – Cibulka syrová historická data získal a zveřejnil včetně vzorové žádosti dle zákona o právu na informace o životním prostředí. Podle chystaného zákona o zabezpečení hydrometeorologické služby by měla odpadnout i nutnost o data explicitně žádat.

Fluttershy, yay! | Komentářů: 67
26.3. 18:22 | IT novinky

Router Turris Omnia 2020 získal certifikaci FCC nezbytnou pro prodej na americkém trhu. S tím souvisí, že je nyní tento router k dostání také prostřednictvím internetového obchodu Amazon.com. Nová verze routeru, která je v nabídce za 334 USD, má stříbrný kovový design a je vybavena operačním systémem Turris OS 4.0. Mimo to jsou její součástí i automatické bezpečnostní aktualizace a nově také testovací verze nového systému zabezpečení Sentinel, který umožňuje ještě rychleji reagovat na síťové hrozby.

Ladislav Hagara | Komentářů: 2
Se kterými dopady COVID-19 už jste se přímo osobně setkali?
 (3%)
 (53%)
 (38%)
 (38%)
 (37%)
 (6%)
 (20%)
Celkem 429 hlasů
 Komentářů: 43, poslední včera 20:38
Rozcestník
Štítky: není přiřazen žádný štítek

www.AutoDoc.Cz


Vložit další komentář
18.4.2019 03:01 Gilhad | skóre: 20 | blog: gilhadoviny
Rozbalit Rozbalit vše Re: Jak se píše programovací jazyk 5: Bajtkód a literály
Krásné :)

Drobné dloubnutí:

Bajtkód a literály: bytecode, bytekód, ...

SEND: PUSH_LITERAL: Délka instrukce: 3 batkódy.
Bystroushaak avatar 18.4.2019 12:28 Bystroushaak | skóre: 36 | blog: Bystroushaakův blog | Praha
Rozbalit Rozbalit vše Re: Jak se píše programovací jazyk 5: Bajtkód a literály
Díky za upozornění, to jsou artefakty dlouhého psaní článku (rozepsal jsem ho už někdy v září).
Bystroushaak avatar 18.4.2019 12:41 Bystroushaak | skóre: 36 | blog: Bystroushaakův blog | Praha
Rozbalit Rozbalit vše Re: Jak se píše programovací jazyk 5: Bajtkód a literály
18.4.2019 07:39 petr_p | skóre: 59 | blog: pb
Rozbalit Rozbalit vše Imperativní bytekód
Stroji s „imperativním bytekódem“ se říká register-based machine. Přesně jako protiklad ke stack-based machine.
Bystroushaak avatar 18.4.2019 12:42 Bystroushaak | skóre: 36 | blog: Bystroushaakův blog | Praha
Rozbalit Rozbalit vše Re: Imperativní bytekód
Díky za doplnění, máš pravdu, teď se mi to vybavuje.
18.4.2019 09:02 kolcon | skóre: 15 | blog: kolcon
Rozbalit Rozbalit vše Re: Jak se píše programovací jazyk 5: Bajtkód a literály
V cem jsou generovane ty obrazky?
18.4.2019 09:41 Bhezret
Rozbalit Rozbalit vše Re: Jak se píše programovací jazyk 5: Bajtkód a literály
Bystroushaak avatar 18.4.2019 12:52 Bystroushaak | skóre: 36 | blog: Bystroushaakův blog | Praha
Rozbalit Rozbalit vše Re: Jak se píše programovací jazyk 5: Bajtkód a literály
V cem jsou generovane ty obrazky?
Doplnil jsem do repa přímo zdrojáky: code_context.plantuml & frames.planuml.
18.4.2019 12:35 Pavel Křivánek | skóre: 28 | blog: Kvičet nezávaznou konverzaci
Rozbalit Rozbalit vše Re: Jak se píše programovací jazyk 5: Bajtkód a literály
Pěkné, zkoušel jsi se zamyslet, jestli by nešlo reprezentovat zásobníky metod a procesů jako jakékoliv jiné objekty, pouze splňující nějaké požadavky dané VM? Otevřelo by to do budoucna řadu možností, ale chápu, že pro začátek je důležité mít co nejdříve něco, na čem lze stavět.
I'm sure it crashed in the most type-safe way possible.
Bystroushaak avatar 18.4.2019 12:50 Bystroushaak | skóre: 36 | blog: Bystroushaakův blog | Praha
Rozbalit Rozbalit vše Re: Jak se píše programovací jazyk 5: Bajtkód a literály
To mě nenapadlo, částečně jsem to už řešil přes reflexi, tedy vytvoření něco jako speciálního mirroru kde je na pozadí primitivní kód co ti umožňuje s tím manipulovat. Pravděpodobně by to šlo tak jak píšeš ty, ale co jsem tak minulý týden řešil s cfbolzem z #pypy, tak tyhle věci typicky dost narušují JIT.
18.4.2019 18:27 Jakosek
Rozbalit Rozbalit vše Re: Jak se píše kozoprcací jazyk 5: Bajtkód a literály
Zajímavé. Ale je to asi jen akademické cvičení, že?
Bystroushaak avatar 18.4.2019 18:56 Bystroushaak | skóre: 36 | blog: Bystroushaakův blog | Praha
Rozbalit Rozbalit vše Re: Jak se píše kozoprcací jazyk 5: Bajtkód a literály
Ani ne. Když si přečteš první díl, tak tam najdeš část odpovědí na téma motivace.
19.4.2019 12:13 Radovan
Rozbalit Rozbalit vše Re: Jak se píše kozoprcací jazyk 5: Bajtkód a literály
Tak ať máš motivaci ještě vyšší, nastupuje konkurence: https://www.root.cz/zpravicky/microsoft-predstavil-novy-programovaci-jazyk-bosque/ 8-O
Bystroushaak avatar 19.4.2019 12:19 Bystroushaak | skóre: 36 | blog: Bystroushaakův blog | Praha
Rozbalit Rozbalit vše Re: Jak se píše kozoprcací jazyk 5: Bajtkód a literály
Bystroushaak avatar 19.4.2019 23:06 Bystroushaak | skóre: 36 | blog: Bystroushaakův blog | Praha
Rozbalit Rozbalit vše Re: Jak se píše kozoprcací jazyk 5: Bajtkód a literály
Tady je k tomu trocha textu: Microsoft debuts Bosque – a new programming language with no loops, inspired by TypeScript

Osobně mi to přijde prostě jako funkcionální programovací jazyk.
19.4.2019 00:33 deda.jabko | skóre: 23 | blog: blog co se jmenuje "každý den jinak" | za new york city dvakrát doleva a pak už se doptáte
Rozbalit Rozbalit vše Re: Jak se píše programovací jazyk 5: Bajtkód a literály
byly mi známé následující přístupy:
  1. Interpretace AST
  2. Interpretace imperativního bajtkódu
  3. Interpretace stack based bajtkódu
Vsechny tri varianty jsou ekvivalentni a navzajem prevoditelne. Hezky to jde videt na prevodu AST<-> stack-based bytecode, coz je trivialni operace. Hlavni rozdil je v tom, jak moc je ktera reprezentace vhodna pro urcity typ transformace/optimalizace nebo analyzy. AST je dobre na optimalizace vyrazu, bytecode pro registrovy virtualni stroj je zase fajn pro optimalizace postavene na toku data a CFG (obzvlast, pokud to mas formou SSA).

Stack-based bytecode je takovy kompromis mezi tim, mas tam explicitne vyjadrene rizeni vypoctu (to v tvem pripade asi neresis) a je z nej trivialni zase ziskat AST vyrazu pro dalsi transformace.

Registrove virtualni stroje maji jeste tu vyhodu, ze je snazsi jejich konverze do instrukci sady klasickych procesoru. Ale pokud delas preklad (pred provedenim) jeste pres nejaky jazyk nebo jiny bytecode, tato vyhoda pada.
Bajtkód, anglicky bytecode, je od slova byte. Samozřejmě nemusí mít přesně jeden bajt, ostatně moje instrukční sada by se mohla vejít do čtyř bitů. Do budoucna by ale mohlo interpreter zrychlit, kdybych provedl rozvoj všech často používaných instrukcí a převedl je z několika-bajtových parametrizovaných na jedno-bajtovové.

Tim moc rychlosti neziskas. Mnohem uzsi hrdlo, ktere to bude brzdit, jsou operace se zasobnikem. Pokud muzu radit, udelej si zasobniky co nejjednodussi. A pokud se mas v planu odchylit od minimalisticke instrukcni sady, pouvazuj nad tim, jak napr. skupinu casto pouzivanych instrukci pracujicich se zasobnikem prevest na jednu (byt slozitejsi) instrukci, ktera se explicitni manipulaci se zasobnikem vyhne.
Asi před rokem se dostali hackeři na servry Debianu a ukradli jim zdrojové kódy.
Bystroushaak avatar 19.4.2019 00:55 Bystroushaak | skóre: 36 | blog: Bystroushaakův blog | Praha
Rozbalit Rozbalit vše Re: Jak se píše programovací jazyk 5: Bajtkód a literály
A pokud se mas v planu odchylit od minimalisticke instrukcni sady, pouvazuj nad tim, jak napr. skupinu casto pouzivanych instrukci pracujicich se zasobnikem prevest na jednu (byt slozitejsi) instrukci, ktera se explicitni manipulaci se zasobnikem vyhne.
Jo, nad tímhle uvažuji.
A pokud se mas v planu odchylit od minimalisticke instrukcni sady, pouvazuj nad tim, jak napr. skupinu casto pouzivanych instrukci pracujicich se zasobnikem prevest na jednu (byt slozitejsi) instrukci, ktera se explicitni manipulaci se zasobnikem vyhne.
Momentálně mám dvě různé implementace, jak jsem psal. Ta ve výsledku rychlejší by měla být prealokované statické pole, kde se jen updatuje index pointer, akorát že v benchmarku s JITem to momentálně vychází trochu pomaleji. Myslím že to ale chce přidat jen víc hintů ohledně toho co je statické / immutable a tak podobně. Rád bych přidal právě instrukce, které obcházejí práci se zásobníkem a konkrétní věci si berou z tabulky literálů. To by mohlo kód trochu zrychlit, ale vidím to že jen asi tak o 17% max.

Udělal jsem si takový jednoduchý benchmark na milion while cyklů, kde tělo je blok a podmínka je blok (tedy obojí je v podstatě lambda). Když jsem dopsal naivní implementaci, tak to trvalo asi dvacet vteřin. Momentálně jsem se po měsíci optimalizací dostal pod jednu vteřinu, s tím že podle cfbolze z #pypy by se mělo jít hravě dostat pod 100ms, pokud správně dodám JITové hinty.

Podle callgrindu momentálně nejvíc času žere parent lookup, a to i přesto že už jsem ho zoptimalizoval, přidal cacheování a prohledávání jen změněných částí grafu. Myslím že přepsáním na hierarchickou cache (momentálně cacheuje každý objekt sám za sebe a při lookupu prohledává jen odminule změněný graf (to pozná podle verzí objektů), ideální by bylo, kdyby se spoléhal i na cache v objektech které prohledává, což se teď neděje) se to ještě může zrychlit.

Minulý týden jsem zkoušel proof of concept dynamického rekompilátoru, který se snažil ty cache parent lookupů staticky inlinovat, ale nakonec jsem to celé vzal a zahodil, protože to bylo docela komplikované, fallback z nopovaného kódu, kde byly odstraněny PUSH_LITERAL instrukce byl docela komplikovaný a právě ta parent cache se ukázala jako vcelku dobrá sama o sobě.

V brzké době o tom vydám článek, všechny ty optimalizace jsem si poznamenával. Chci se teď zaměřit zase spíš na rozvoj funkcionality, když jsem rychlost dostal pod tu jednu vteřinu, což mi přijde pro další rozvoj jako proof of concept že to není úplně marné.
19.4.2019 08:01 sad
Rozbalit Rozbalit vše Re: Jak se píše programovací jazyk 5: Bajtkód a literály
Rekurzi můžeš nahradit nejen zásobníkem, ale i vlákny.
19.4.2019 11:02 Radovan
Rozbalit Rozbalit vše Re: Jak se píše programovací jazyk 5: Bajtkód a literály
Rekurzí můžeš nahradit nejen zásobník, ale i vlákna ;-)
Bystroushaak avatar 19.4.2019 12:12 Bystroushaak | skóre: 36 | blog: Bystroushaakův blog | Praha
Rozbalit Rozbalit vše Re: Jak se píše programovací jazyk 5: Bajtkód a literály
Rekurzi můžeš nahradit nejen zásobníkem, ale i vlákny.
Ok, ale jakou to má souvislost?
19.4.2019 13:38 sad
Rozbalit Rozbalit vše Re: Jak se píše programovací jazyk 5: Bajtkód a literály
Myslel jsem, že máš problém s rychlostí toho překladače.
Bystroushaak avatar 19.4.2019 14:00 Bystroushaak | skóre: 36 | blog: Bystroushaakův blog | Praha
Rozbalit Rozbalit vše Re: Jak se píše programovací jazyk 5: Bajtkód a literály
Nemám vůbec žádný problém s rychlostí překladače. Chybí mi doladit rychlost interpretru, kterou jsem za poslední měsíc zrychlil asi 20x, ale ani jedno vůbec nesouvisí s rekurzí. A vysloveně jsem tam psal, že mi už rychlost vyhovuje a že se chci zaměřit zase na funkcionalitu, místo rychlostních optimalizací, takže tu odpověď nechápu už vůbec.
19.4.2019 14:05 sad
Rozbalit Rozbalit vše Re: Jak se píše programovací jazyk 5: Bajtkód a literály
Aha, tak to je dobře. Zřejmě jsem si ten tvůj příspěvek špatně přečetl.
Josef Kufner avatar 19.4.2019 14:37 Josef Kufner | skóre: 69
Rozbalit Rozbalit vše Re: Jak se píše programovací jazyk 5: Bajtkód a literály
Rychlost interpretování vyřešil docela hezky Haskell. Prostě svůj zdroják přeloží do zdrojáku v C a na to pustí vyladěné překladače plné šílených optimalizací.
Hello world ! Segmentation fault (core dumped)
Bystroushaak avatar 19.4.2019 14:40 Bystroushaak | skóre: 36 | blog: Bystroushaakův blog | Praha
Rozbalit Rozbalit vše Re: Jak se píše programovací jazyk 5: Bajtkód a literály
To dělá rpython taky, ale to ti samo o sobě moc nepomůže. JIT momentálně tak jak ho mám přidává docela dobrý boost (cca 130% rychlosti), a pokud se dobře vyladí, tak klidně i víc. Hezky je to vidět třeba na jednom benchmarku co jsem si dělal v pythonu, který pod cpythonem běžel 3/4 hodiny a pod pypy díky JITu 32 sekund.
Josef Kufner avatar 19.4.2019 23:47 Josef Kufner | skóre: 69
Rozbalit Rozbalit vše Re: Jak se píše programovací jazyk 5: Bajtkód a literály
Spíš jsem to myslel na případ, kdy si člověk tvoří něco svého. To pak obvykle nemá prostředky na vývoj pořádného interpretu a je lepší využít nějaký existující nástroj.
Hello world ! Segmentation fault (core dumped)
Bystroushaak avatar 20.4.2019 00:14 Bystroushaak | skóre: 36 | blog: Bystroushaakův blog | Praha
Rozbalit Rozbalit vše Re: Jak se píše programovací jazyk 5: Bajtkód a literály
Já myslím že dneska to úplně nedává smysl, pokud tomu nechceš věnovat roky a roky vývoje. Konkrétně co tak chodím na ty Graal talky, tak to je dneska / bude v brzké době jasná volba.
Josef Kufner avatar 20.4.2019 17:00 Josef Kufner | skóre: 69
Rozbalit Rozbalit vše Re: Jak se píše programovací jazyk 5: Bajtkód a literály
Pokud máš úlohy, kde dává smysl sestavit vlastní DSL a záleží na výkonu, tak asi nejlepším přístupem je právě překlad do jiného jazyka namísto psaní interpretu. To může být záležitost na pár dní, nikoliv pár roků, a přitom to bude velmi dobře funkční i efektivní.

Někdy ani není potřeba tvořit celý jazyk znovu, ale stačí ho trochu rozšířit. Vem si například React a jeho JSX. Prostě vzali syntaxi Javascriptu a přidali do toho HTML. Výsledkem je pohodlnější zápis HTML DOM elementů a přitom to je jen o překladu podivné syntaxe do volání pár funkcí.
Hello world ! Segmentation fault (core dumped)
Bystroushaak avatar 20.4.2019 23:21 Bystroushaak | skóre: 36 | blog: Bystroushaakův blog | Praha
Rozbalit Rozbalit vše Re: Jak se píše programovací jazyk 5: Bajtkód a literály
Pokud máš úlohy, kde dává smysl sestavit vlastní DSL a záleží na výkonu, tak asi nejlepším přístupem je právě překlad do jiného jazyka namísto psaní interpretu. To může být záležitost na pár dní, nikoliv pár roků, a přitom to bude velmi dobře funkční i efektivní.
Transkompilátory afaik dávají smysl jen za předpokladu, že děláš funkčně něco hodně podobného tomu podkladovému jazyku. Tedy jak píšeš, DSL. Nebo například jsem tu kdysi psal blog o brythonu, který transkompiluje za běhu python do javascriptu, což jde a má to smysluplnný výkon, protože oba jazyky jsou si alespoň přibližně podobné co do dynamičnosti a brythonu v podstatě stačí používat restriktivní javascript. Obráceně už bys to ale dělal hůř, například transkompilovat javascript do pythonu by asi chtělo pěkný kus hackování a výkon by šel do kytek. To samé se Selfem - jak jsem psal v tom druhém seriálu, kdysi vznikl Smalltalk implementovaný nad Selfem, který běžel rychleji než tehdejší smalltalky. Naopak to lidi taky zkoušeli, ale výkon byl tragický, protože právě řešení parentů musí být z principu dynamické a nemáš ho moc na co namapovat ve většině jazyků.

Co je ale killer feature toho graalu, co nikdo jiný afaik nemá, je interop. Tedy tvůj jazyk bude umět pracovat s datovými strukturami a funkcionalitou všech ostatních věcí napsaných v graalu. Tedy pythonem, ruby, C, javascriptem a kopou dalších projektů. A celé to bude mít velmi dobrý výkon. Například jsem viděl benchmark kde javascriptový kód volal generátor v ruby a celé to běželo asi 20x rychleji, než samotné ruby a jen o trochu pomaleji než optimalizované C. A teď se člověk zamyslí, že generátor v ruby je něco úplně jiného v javascriptu a oba dva používají jiné formaty intů, které to vracelo a je jasně vidět ten potenciál. Jaroslav Tulach viděl ty moje články o tinySelfu a vybral si jako semestrální projekt Self, kde killer feature bude že to narozdíl od původního Selfu bude mít k dispozici nejen Selfí stdlib, ale všechno pro python, ruby, javascript, C, ..

Přitom tam sice musíš psát interpreter, ale nemusíš jít za implementaci AST. Tedy ti stačí lexer, parser, AST strom s .eval() metodami a jsi hotový.
Bystroushaak avatar 19.4.2019 18:10 Bystroushaak | skóre: 36 | blog: Bystroushaakův blog | Praha
Rozbalit Rozbalit vše Re: Jak se píše programovací jazyk 5: Bajtkód a literály
V brzké době o tom vydám článek, všechny ty optimalizace jsem si poznamenával.
Tak jo, tady: tinySelf performance gains 2019/4.
20.4.2019 00:42 kralyk z abclinuxu | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Jak se píše programovací jazyk 5: Bajtkód a literály
Ten LightWeightDict mi připomíná SmallVector / SmallString, jestli to dobře chápu, je to stejná strategie...
Přidej se k odporu proti eko-fanatismu! Konzumuj prémiové informace plné zdravého rozumu a vyhýbej se těm nevhodným!
Bystroushaak avatar 20.4.2019 01:17 Bystroushaak | skóre: 36 | blog: Bystroushaakův blog | Praha
Rozbalit Rozbalit vše Re: Jak se píše programovací jazyk 5: Bajtkód a literály
Já úplně nevím co referencuješ, abych na to mohl odpovědět.
22.4.2019 13:23 kralyk z abclinuxu | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Jak se píše programovací jazyk 5: Bajtkód a literály
Sorry, už jsem jak davkol :-D Já ten koncept znám z LLVM - viz SmallVector a příp. SmallString nebo to samé v Rustu [1, 2]. Píšeš tam např., že použití linked listů pro stacky oproti běžnému pythonímu listu bylo o dost rychlejší. Možná by se stejná optimalizace jako ten LightWeightDict / SmallVector / etc. dala použít i pro stack, tj. že bys měl prealokované pole pro prvních N položek a jakékoli další by šly do toho spojáku. Otázka je, jestli by to reálně bylo rychlejší (special casing → více branchování).

Možná vůbec nejlepší, co se rychlosti týče, udělat si statistiky nejpoužívanějších sekvencí instrukcí a ty pak optzimalizovat... Ale to se blbě dělá bez reálných programů v tinySelfu.

Btw. ten `TwoPointerArray` mi připadá, že je prostě Ring buffer, jestli to dobře čtu...
Přidej se k odporu proti eko-fanatismu! Konzumuj prémiové informace plné zdravého rozumu a vyhýbej se těm nevhodným!
Bystroushaak avatar 23.4.2019 09:48 Bystroushaak | skóre: 36 | blog: Bystroushaakův blog | Praha
Rozbalit Rozbalit vše Re: Jak se píše programovací jazyk 5: Bajtkód a literály
Možná by se stejná optimalizace jako ten LightWeightDict / SmallVector / etc. dala použít i pro stack, tj. že bys měl prealokované pole pro prvních N položek a jakékoli další by šly do toho spojáku. Otázka je, jestli by to reálně bylo rychlejší (special casing → více branchování).
Můžu na to mrknout.
Možná vůbec nejlepší, co se rychlosti týče, udělat si statistiky nejpoužívanějších sekvencí instrukcí a ty pak optzimalizovat... Ale to se blbě dělá bez reálných programů v tinySelfu.
Mno, ideálně chceš aby za tebe tohle řešil nějaký backend, ala ten JIT.
Btw. ten `TwoPointerArray` mi připadá, že je prostě Ring buffer, jestli to dobře čtu...
Není to úplně ring buffer, je to jednoduše prealokované pole, kde se při .pop() a .append() posouvají dva indexy zleva a zprava. Princip je podobný, ale není to cirkulární.
8.1. 12:37 kamyl
Rozbalit Rozbalit vše Re: Jak se píše programovací jazyk 5: Bajtkód a literály
HOVNA S MASLEM A MERMOSKOU

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267   www.czech-server.cz
© 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.