Ho alcuni metodi globali dichiarati in public class nella mia applicazione Web ASP.NET.Static Vs Instance Method Performance C#
ho l'abitudine di dichiarare tutti i metodi globali in classe pubblica nel seguente formato
public static string MethodName(parameters) { }
Voglio sapere come sarebbe avere un impatto sulle prestazioni punto di vista?
- Quale è il migliore? Metodo statico o metodo non statico?
- Motivo perché è meglio?
http://bytes.com/topic/c-sharp/answers/231701-static-vs-non-static-function-performance#post947244 stati:
perché, metodi statici stanno usando blocchi per essere thread-safe. Il sempre esegue internamente un Monitor.Enter() e Monitor.exit() per garantire la sicurezza del filo .
Mentre http://dotnetperls.com/static-method stati:
metodi statici sono normalmente più veloce per richiamare sul stack di chiamate di metodi di istanza. Ci sono diversi motivi per questo nel linguaggio di programmazione C# . I metodi di istanza in realtà utilizzano il puntatore di istanza "this" come primo parametro, quindi un metodo di istanza sarà sempre con overhead. I metodi di istanza sono anche implementati con l'istruzione callvirt nella lingua intermedia, che impone un leggero overhead . Ti preghiamo di notare che è improbabile che la modifica dei metodi a metodi statici aiuti molto su obiettivi di prestazioni ambiziosi, ma lo può essere di aiuto in piccola parte e può portare a ulteriori riduzioni.
Sono poco confuso quale usare?
Hai letto fino alla fine di quel primo collegamento? Diventa abbastanza chiaro, anche all'interno del thread, che l'asserzione sul blocco automatico è falsa. –