Производительность статических методов по сравнению с методами экземпляра
Мой вопрос касается характеристик производительности статических методов по сравнению с методами экземпляров и их масштабируемости. Предположим для этого сценария, что все определения классов находятся в одной сборке и что требуется несколько типов дискретных указателей.
Рассматривать:
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.
}
Вышеуказанные классы представляют шаблон стиля помощника.
В классе экземпляра для разрешения метода экземпляра требуется время, в отличие от StaticClass.
Мои вопросы:
Когда сохранение состояния не является проблемой (поля или свойства не требуются), всегда ли лучше использовать статический класс?
Там, где существует значительное количество определений статического класса (скажем, 100, например, с несколькими статическими методами в каждом), это отрицательно повлияет на производительность выполнения или потребление памяти по сравнению с тем же числом определений классов экземпляров?
Когда вызывается другой метод в том же классе экземпляра, разрешение экземпляра все еще происходит? Например, используя ключевое слово [this], напримерthis.DoOperation2("abc")
изнутриDoOperation1
того же экземпляра.