Desempenho de métodos estáticos versus métodos de instância
Minha pergunta está relacionada às características de desempenho de métodos estáticos versus métodos de instância e sua escalabilidade. Suponha para este cenário que todas as definições de classe estão em um único assembly e que vários tipos de ponteiro discretos são necessários.
Considerar:
public sealed class InstanceClass
{
public int DoOperation1(string input)
{
// Some operation.
}
public int DoOperation2(string input)
{
// Some operation.
}
// … more instance methods.
}
public static class StaticClass
{
public static int DoOperation1(string input)
{
// Some operation.
}
public static int DoOperation2(string input)
{
// Some operation.
}
// … more static methods.
}
As classes acima representam um padrão de estilo auxiliar.
Em uma classe de instância, resolver o método da instância leva um momento para fazer como opor a StaticClass.
Minhas perguntas são:
Quando manter o estado não é uma preocupação (não são necessários campos ou propriedades), é sempre melhor usar uma classe estática?
Onde há um número considerável dessas definições de classe estática (digamos 100 por exemplo, com vários métodos estáticos cada) isso afetará negativamente o desempenho de execução ou o consumo de memória em comparação com o mesmo número de definições de classe de instância?
Quando outro método dentro da mesma classe de instância é chamado, a resolução da instância ainda ocorre? Por exemplo, usando a palavra-chave [this] comothis.DoOperation2("abc")
de dentroDoOperation1
da mesma instância.