NOVINKA - Online rekvalifikační kurz Python programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
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í.

Diskuze: předávání structu v parametru

V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
havlat82
Člen
Avatar
havlat82:13.2.2019 16:12

četl jsem nedávno zase po čase Tray Nash: Nejlepší postupy v C#. Zarazila mě tam informace o tom, že structy jsou nákladnější na zpracování než referenční typy. Takže když vestavěný typy jako je int nebo bool jsou taky vesměs structy, tak je jejich zpracování nákladnější než kdybych je uložil do nějaký třídy a tu předal?

Zkusil jsem: Prošel sem MSDN články ke structům, a hafo blogů..

Chci docílit: Optimalizace., Chci se vrátit k jednomu starýmu projektu v unity3d. je tam povrch 500x500m kde se má šířit požár. GC neni zrovna nejsilnější stránka unity a častý volání GC zabíjelo FPS a děsně zatěžovalo procesor.. Poradil by mi někdo kde najdu dobrý čtení o optimalizaci kolekcí?

 
Odpovědět
13.2.2019 16:12
Avatar

Člen
Avatar
:14.2.2019 8:17

Já odebírám německý dotnetpro, kde se tu a tam řeší právě podobné problémy optimalizace (témata jsou různá od optimalizace vkládání položek do DB pomocí různých metod až třeba po optimalizaci práce pomocí GC). Případně doporučím DNC.
Jako dobrý zdroj na různá zákoutí programování používám agregátor článků z https://csharpdigest.net/. Taky se tu a tam objevují zajímavá témata právě na temná zákoutí optimalizace anebo rozebírají někteří autoři některé mechaniky skutečně do hloubky.
Ale neznám žádný obecný zdroj, kde se dá tohle nějak instantně najít. Napadá mě snad ještě stackoverflow.com kde se na některé specifické dotazy dají projít různá řešení a další informace. Např. zde.
Ohledně GC v Unity bych hledal spíš zdroje podobné těmto orientavané právě na uplatnění optimalizace v engine Unity.

 
Nahoru Odpovědět
14.2.2019 8:17
Avatar
Luboš Běhounek Satik:14.2.2019 17:03

Pokud do funkce předáváš struct, tak se celý kopíruje, pokud class, kopíruje se jen reference na ni.
Takže větší struct vs větší class je rychlejší předat jen odkaz na třídu, než kopírovat celý struct. Plus samozřejmě když vytvoříš kopii structu, GC se pak o to musí postarat.

GC a unity - na větší množství objektů je většinou nejlepší používat nějaký pool, prostě mít vytvořený pole/list objektů a místo mazání si u nich třeba jen hlídat, jestli jsou aktivní nebo ne, ale detaily implementace už záležej na tom, o co se snažíš.

Editováno 14.2.2019 17:03
Nahoru Odpovědět
14.2.2019 17:03
https://www.facebook.com/peasantsandcastles/
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 3 zpráv z 3.