Pregunta

En una aplicación con un pequeño número de POJOs y un montón de métodos de ayuda que operan en ellos, lo que es mejor en cuanto al rendimiento:? Para hacer que los únicos clases de ayuda o para hacer que los métodos estáticos

¿Fue útil?

Solución

Los métodos estáticos serían muy ligeramente mejor rendimiento y la memoria sabia:

  1. Evitar la sobrecarga (potencial) de llamadas a funciones virtuales.
  2. Elimina la memoria necesaria para una instancia real de la clase.
  3. Elimina la necesidad de obtener una instancia de la clase cuando lo utiliza.

Pero honestamente yo probablemente todavía lo hacen un singleton de todos modos. Las ganancias que obtendría por no hacerlo son probablemente tan pequeñas que harían la diferencia cero, incluso en un entorno móvil.

Otros consejos

Se puede evitar cualquier situación y hacer que las clases regulares?

Haciendo caso omiso de la cuestión de rendimiento, recomendaría evitando singeltons y métodos estáticos para mejorar su capacidad de prueba.

Singleton y métodos estáticos pueden ser muy difícil de prueba; en este sentido singletons son esencialmente métodos estáticos pero con un nombre diferente. Misko Hevery , que trabaja en la Google equipo de la prueba , tiene algunos buenos artículos sobre este tema:

No se preocupe por absurdos micro-optimizaciones como eso. Preocuparse por el mantenimiento.

Parece que la aplicación está escrita en un estilo totalmente no-OO y podría beneficiarse mucho de la eliminación de la mayor parte de esos "métodos de ayuda" y ponerlos donde pertenecen, con los datos que operan en.

Tomando su pregunta a su valor nominal, las llamadas estáticas que es probable la menor cantidad de energía de la CPU. La razón es que los métodos normales son dinámicos y requieren un cierto límite de búsqueda en tiempo de ejecución, mientras que los métodos estáticos están unidos un tiempo de compilación.

Una vez dicho esto, probablemente no tendrá importancia en la aplicación. La diferencia es muy pequeña. Si su aplicación hace cualquier cosa con interfaz gráfica de usuario, la representación XML, las conexiones a Internet u otra manipulación externa your'll encuentran que estas actividades empequeñecen las operaciones de búsqueda Mathod simples por un factor muy importante.

Incluso si no lo hace, durante el perfilado es más probable que encuentre un único cuello de botella hasta la celebración de su aplicación y descubre que no es el método lookup, pero algo de lógica que hizo su auto. Por ejemplo que utilizó un ArrayList en lugar de un hashset y el método contains llegar a ser caro.

Así como el rendimiento en estos casos no importa, yo recomendaría el uso de las implementaciones singletons por encima de los métodos estáticos como el diseño es un poco más flexible. Aunque fuera de las opciones que ofrecen Me deje caer las clases de ayuda totalmente en línea y de los métodos en los de POJO.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top