Attualmente sto leggendo di Oreilly Learning XNA 4.0 e ho notato che l'autore è incline alla creazione di un valore struct, come ad esempio Vector2
o Rectangle
più volte senza alcun riguardo per le prestazioni.Prestazioni di creare struct valori
Ad esempio, un metodo SquareCollision()
, che controlla la collisione tra due entità gioco crea due Rectangle
s ogni volta che viene chiamato, invece di dover ogni entità gioco reggere il Rectangle
campo e confronta i campi senza creare più struct valori.
Ho visto questo schema molte volte in molti luoghi e questo mi ha fatto meravigliare:
La creazione di valori di struct è trascurabile in C#?
Questo è veramente nella sezione delle micro-ottimizzazioni?
Forse perché la mia esperienza è per lo più con Java, il concetto di ValueType
s è strano per me, ma sembra che ricreare un valore da una struttura (e chiamando è costruttore) più volte sembra uno spreco enorme di risorse.
Hai provato a profilarlo? –
Penso che sia un po 'difficile da profilare, perché quello che conta davvero è il successo generale delle prestazioni. Anche se ricreare lo stesso valore è 10.000 volte più lento rispetto all'utilizzo di un campo, significherebbe comunque poco se si riscontra solo un impatto dello 0,0001% sulle prestazioni. (Ci scusiamo per i numeri arbitrari, solo cercando di farmi capire.) Quello che sto cercando di capire è quanto sia pessima una pratica (se non del tutto) e se dovrei o non provare a evitarlo. – Acidic
Potresti rendere la domanda un po 'più concreta mostrando il codice. Previene incomprensioni. –