Skip to Content
Nuova versione 12 disponibile 🎉

Prestazioni

Il proxy dinamico aggiunge due tipi di costo, entrambi ridotti:

  • Un costo una tantum per ogni punto di chiamata con proxy. La prima volta che un membro viene chiamato tramite proxy, il resolver iniettato risolve la destinazione e collega il delegate. Questo avviene in modo differito (lazy), cioè solo per i punti di chiamata effettivamente raggiunti, e una sola volta per punto di chiamata. Nelle applicazioni che applicano il proxy a un numero molto elevato di chiamate distinte, questo può aggiungere un tempo piccolo ma misurabile all’avvio o al primo utilizzo.
  • Un costo trascurabile a regime. Dopo la prima chiamata, le invocazioni passano dal delegate nella cache. L’overhead aggiunto per chiamata è dell’ordine di pochi nanosecondi ed è irrilevante per la grande maggioranza del codice.

Poiché il corpo del metodo chiamato resta invariato, i metodi che svolgono un lavoro reale in pratica non ne risentono. L’overhead diventa percepibile solo per metodi estremamente piccoli chiamati in cicli molto intensi (milioni di chiamate). In questi casi, e per mantenere veloce l’avvio quando solo una parte del codice è sensibile, usa i filtri per applicare il proxy solo alle chiamate che richiedono protezione, anziché all’intero assembly.

Tieni presente che la protezione con proxy dinamico, pur offrendo un ulteriore strato di offuscamento, può incidere leggermente sul tempo di avvio della tua applicazione, a causa della generazione e dell’inizializzazione delle classi proxy. Nella maggior parte dei casi, però, il compromesso tra una maggiore sicurezza e un piccolo impatto sulle prestazioni è considerato vantaggioso.

Last updated on