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.