La utilidad de un método estático se produce principalmente cuando necesita llamar al método sin instanciar el objeto. Por ejemplo, tal vez el método estático esté ahí para buscar una instancia existente y devolverla (un ejemplo es una instancia singleton).
Como han indicado otros, puede hacer cualquier método estático si no tiene acceso al estado, y obtendrá una pequeña mejora en el rendimiento.
Si de verdad quiere poder llamar al método en una instancia específica y obtener los beneficios del polimorfismo (es decir, una clase derivada puede anular el comportamiento del método), entonces debe hacer que sea un método de instancia .
Si sus clases implementan interfaces, los métodos que pertenecen a esas interfaces también deben declararse como métodos de instancia.
Por favor, el argumento de velocidad solo debe considerarse si está tratando de hacer algo en una plataforma muy lenta o cientos de miles de veces en un segundo. Supongo que estás trabajando con un procesador dual core de> 2 Ghz. La diferencia de velocidad entre una llamada de función miembro y una llamada a función estática no debe ser un criterio de diseño. –
Sí, incluso en plataformas mucho más lentas, no debería ser una consideración de diseño (como dije en la respuesta). Acabo de notar la diferencia en el rendimiento porque se pregunta específicamente. –