Pouze tento týden sleva až 80 % na e-learning týkající se C# .NET. Zároveň využij akce až 50 % zdarma při nákupu e-learningu. Více informací:
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
tomekmichalhu:23.6.2021 21:22

Ahoj, pracuji na hře v JWLGL (spíš ze zvědavosti, než pro ten finální produkt) a mám tam nějaké činnosti (např. path finding), které trvají relativně dlouho a na jejich řešení není potřeba v herní smyčce čekat - no prostě ideální adepti na asynchronní tasky pomocí thread poolu. Ovšem po naimplementování hra běží velice neochotně.
Algoritmus, který běžel předtím stabilně na 60FPS (a 60fps je maximum, jinak by to běželo i víc), tak teď běží v průměru tak na 30 a jsou tam často několikavteřinový záseky. Dokonce už samotná existence byť jen jednoho dalšího vlákna, které ani nemusí nic dělat, výrazně snižuje výkon. Naopak skoro nehraje roli, jestli nasázím do fronty tasků 100, nebo 10 000.
Snažil jsem se to různě optimalizovat, měnit počty a priority vláken, přidávat JVM paměť, ale to pomohlo jen minimálně. Zkoušel jsem vytvořit vlastní implementaci i použít ThreadPoolExecutor, který java už obsahuje, ale v tom není rozdíl. Už moc nevím co s tím.

 
Odpovědět
23.6.2021 21:22
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 1 zpráv z 1.