Stavo leggendo questo post qui su micro ORM utilizzato su SO.Che cosa significa cucinare un metodo?
L'autore ha mostrato questo stack-trace:
System.Reflection.Emit.DynamicMethod.CreateDelegate
System.Data.Linq.SqlClient.ObjectReaderCompiler.Compile
System.Data.Linq.SqlClient.SqlProvider.GetReaderFactory
System.Data.Linq.SqlClient.SqlProvider.System.Data.Linq.Provider.IProvider.Compile
System.Data.Linq.CommonDataServices+DeferredSourceFactory`1.ExecuteKeyQuery
System.Data.Linq.CommonDataServices+DeferredSourceFactory`1.Execute
System.Linq.Enumerable.SingleOrDefault
System.Data.Linq.EntityRef`1.get_Entity
poi disse:
Nella traccia sopra si può vedere che 'EntityRef' sta cuocendo un metodo, che non è un problema, a meno che non avvenga centinaia di volte al secondo.
Qualcuno potrebbe spiegare la traccia dello stack in relazione a ciò che intendeva per "cottura di un metodo" e perché sarebbe un problema di prestazioni?
Grazie, potresti fornire un esempio o spiegare una circostanza sul motivo per cui l'albero delle espressioni dovrebbe essere ricompilato in fase di runtime? Ad esempio, nel tuo esempio, c'è qualche parte di ciò che ricompilare in fase di runtime? –
@Lolcoder: Supponiamo di aver ottenuto i dettagli della query dall'utente, perché, ad esempio, hanno digitato la parola chiave su cui volevano effettuare la ricerca, o se volevano eseguire un filtro, o un ordine, o qualsiasi altra cosa. –