2015-08-06 3 views
10

Nella documentazione circa Scala value classes, si è detto che ci sono tre casi in cui una classe valore deve essere effettivamente assegnato un'istanza:C'è un modo per ottenere un avviso quando è necessario creare un'istanza di Scala Value Class?

Sommario Allocation

Una classe valore viene istanziata quando:

  1. una classe di valore viene considerata come un altro tipo.
  2. una classe valore è assegnata a un array.
  3. esecuzione di test sul tipo di runtime, ad esempio la corrispondenza del modello.

È ci una regolazione nel compilatore o nei funzionalità del linguaggio che produrrebbero un avviso quando una classe di valore deve essere istanziati?

risposta

1

No, non attualmente.

Tuttavia, raramente vale la pena di preoccuparsi di questo tipo di micro-ottimizzazione.

Se si dispone di un codice molto molto caldo e occorre ottimizzarlo il più possibile, provare solo alcune cose e ripetere il benchmark.

Il compilatore JIT cambierà ciò che il codice sta facendo a livello macchina per un sacco di volte se il codice è abbastanza caldo.

Il sovraccarico di allocazione di una classe di valore spesso non è nemmeno misurabile a meno che non sia l'unica cosa che il thread sta facendo. Vedi per es. https://groups.google.com/forum/#!topic/scala-user/XdQnbcs2SRM per alcuni benchmark in cui l'allocazione della classe di valore non è misurabile.