Zpět na mojí domovskou stránku…

Zde najdete přehled nápadů (tj. úpravy zadání jsou vítané) pro ročníkový projekt. Pokud Vás něco zaujalo, ozvěte se. A ozvěte se i pokud máte vlastní nápad ;-).

Všechny uvedené nápady cílí na klasické provedení ročníkového projektu a navazující bakalářské práce (tj. obvykle se do bakalářky píše o architektuře řešení, provede se změření rychlosti a porovnání s konkurencí apod.).

Rychlé a přesné měrení v Javě

Pokud potřebujete změřit výkon části Javovského programu, máte k dispozici jednak System.nanoTime() pro měření z Javy nebo můžete použít externí profiler. Zatímco první možnost má minimální režii, taky neposkytuje příliš informací. Externí profiler může poskytnout informací více, ale platíte za to větší režií. Cílem projektu by bylo rozšířit existující projekt (kde „umíme" malou režii a spoustu informací) o možnost rozumně sledovat více vláken a vkládat měřící kód dynamicky za běhu. Pověstnou třešničkou na dortu by pak byla možnost měřit metody jednoho konkrétního objektu (nikoliv všech objektů dané třídy).

Případný zájemce se nesmí bát Javy, jazyka C (popř. C++) a je nejvýše vhodné, pokud bude zvládat vyvíjet pro více platforem současně (Windows a GNU/Linux).

Unit testování výkonu

Unit testy ověřující, že dané funkce (metody) jsou dostatečně rychlé. Cílem je umět detekovat problémy s výkonem (rychlostí) stejně pohodlně a jednoduše jako lze detekovat problémy s funkčností (kontaktujte buď mě nebo Petra Tůmu).

Cílem projektu by bylo přidat framework pro spouštění podobných testů a jeho navázání na vhodnou databázi s předchozími výsledky, aby byl uživatel rychle informován o regresích.

Benchmarkování Scaly, Javy a dalším jazyků nad JVM

Renaissance je sada benchmarků pro měření výkonu Javy (JVM). Cílem projektu by bylo rozšířit tuto sadu o další benchmarky: optimálně „osekáním" existující (open source) aplikace a její převedení do menšího benchmarku (který ale pořád reprezentuje realistickou práci).

HelenOS, tj. programování operačního systému

Tipy lze najít nejlépe mezi otevřenými tickety nebo na speciální stránce. Mezi zajímavá témata určitě patří rozšíření podpory Raspberry Pi, port DosBoxu nebo třeba ovladače pro USB zařízení. Pro náročnější pak vytvoření emulační vrstvy pro aplikace jiného operačního systému (tj. emulace např. FreeBSD syscallů nad HelenOSem). Podrobněji rozpracované jsou nápady z minulých ročníků GSoCu.

Rozšíření MSIMu

MSIM je náš emulátor MIPSové platformy, který věrně emuluje procesor R4000 a základní periferie. Bylo by ale fajn ho rozšířit o další zařízení, např. grafickou kartu (třeba přes SDL) nebo virtualizovanou síťovku.

Pro náročné je pak přidání základní podpory pro PCI pass-through.

Cokoliv dalšího

„Trufflový" překladač (interpretr) Pascalu

Graal/Truffle poskytuje rozhraní pro psaní překladačů, jejichž výstupem je (nepřímo) Javovský bajtkód. Kromě toho nabízí alternativní implementaci JIT (just-in-time) překladače uvnitř Javovského virtuálního stroje. V současnosti probíhají práce na implementaci překladače JavaScriptu, Ruby a R.

Cílem RP by bylo napsat základ překladače Pascalu, který by umožnil zkompilovat a spustit jednoduché Pascalovské programy. Pilotní verze nemusí podporovat veškeré obraty Pascalu. RP je pochopitelně možné rozšířit na bakalářskou práci – jak obvyklou implementační tak i více teoreticky zaměřenou, pokud by byl zájem hlouběji zkoumat optimalizace (předávané jako „nápovědu" pro JIT překladač).

Dokončen vč. obhajoby bakalářské práce, github.com/Aspect26/TrufflePascal.

PerfJavaDoc

Rozšíření JavaDocu informace o rychlosti jednotlivých metod (podrobnosti). Dokončen vč. obhajoby bakalářské práce, github.com/arahusky/performance_javadoc.