Rendimiento de métodos estáticos vs métodos de instancia

Mi pregunta está relacionada con las características de rendimiento de los métodos estáticos frente a los métodos de instancia y su escalabilidad. Supongamos que para este escenario, todas las definiciones de clase están en un solo ensamblaje y que se requieren varios tipos de punteros discretos.

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.
}

Las clases anteriores representan un patrón de estilo de ayuda.

En una clase de instancia, resolver el método de instancia toma un momento para actuar como oposición a StaticClass.

Mis preguntas son:

Cuando mantener el estado no es una preocupación (no se requieren campos ni propiedades), ¿es siempre mejor usar una clase estática?

Cuando exista un número considerable de estas definiciones de clase estáticas (por ejemplo, 100, por ejemplo, con un número de métodos estáticos cada uno), esto afectará negativamente al rendimiento de ejecución o al consumo de memoria en comparación con el mismo número de definiciones de clase de instancia.

Cuando se llama a otro método dentro de la misma clase de instancia, ¿todavía ocurre la resolución de la instancia? Por ejemplo, usando la palabra clave [this] comothis.DoOperation2("abc") desde dentroDoOperation1 de la misma instancia.

Respuestas a la pregunta(3)

Su respuesta a la pregunta