Prendi "aumenterà le prestazioni" come un dato, ma ne sei veramente sicuro? Le strutture hanno prestazioni migliori delle classi in circostanze specifiche. Sto generalizzando per semplicità, ma gli scenari sono principalmente:
- Sono immutabili.
- Sono piccoli, ad es. di solito non più di 3 - 4 campi.
- Stai generando tonnellate (spesso milioni o più) di loro in un intervallo di tempo estremamente breve.
- Stai lavorando con loro in loop stretti.
- I percorsi di codice che attraversano sono ottimizzati per quelle strutture specifiche e non eseguono operazioni di boxing/unboxing.
Ce ne sono altri, ma questo è fuori di testa. E anche allora, stiamo parlando di guadagni di prestazioni spesso minuscole. Come in microsecondi minuscolo.
Anche se è possibile garantire che i modelli di visualizzazione siano immutabili e piccoli, le altre condizioni non vengono mantenute. Supponendo un modello di visualizzazione per richiesta, il tuo server web non gestirà milioni di richieste al secondo. Inoltre, il framework MVC non funziona con questi in cicli stretti e non contiene percorsi di codice ottimizzati per questa particolare struttura. Di conseguenza, il framework MVC finirà per eseguire tonnellate di operazioni di boxing/unboxing sui tipi di valore.
Bottom line: non ottimizzare o eseguire l'over-engineer della soluzione. Le lezioni vanno bene. E per quanto riguarda l'ottimizzazione, lo misura sempre per assicurarti di dedicare il tuo tempo a una valida impresa. Non preoccuparti di banalità quando ci sono pesci più grandi da friggere.
Grazie mille per il vostro tempo e una spiegazione approfondita, Levi. I tuoi pensieri rendono la mia giornata. –
Inoltre, una struttura viene passata attraverso lo stack (ulteriori informazioni da trasferire) e la classe viene passata attraverso l'heap tramite un puntatore (meno informazioni da trasferire). So che è una vecchia domanda, ma i nuovi visitatori meritano di saperne di più. –