En una aplicación con un pequeño número de POJO y muchos métodos de ayuda que operan en ellos, ¿qué es mejor para el rendimiento: hacer que las clases auxiliares sean simples o que los métodos sean estáticos?Métodos estáticos o Singletons en cuanto al rendimiento (Android)?
Respuesta
Los métodos estáticos serían muy ligeramente mejor rendimiento y la memoria sabia:
- Evitar (potencial) por encima de llamadas a funciones virtuales.
- Elimina la memoria necesaria para una instancia real de la clase.
- Elimina la necesidad de obtener una instancia de la clase cuando la utiliza.
Pero, sinceramente, probablemente aún así sea un singleton
de todos modos. Las ganancias que obtendría al no hacerlo son probablemente tan pequeñas que no generarían ninguna diferencia, incluso en un entorno móvil.
¿Puedes evitar cualquier situación y hacer que sean clases regulares?
Haciendo caso omiso de la pregunta de rendimiento, recomendaría evitar singeltons y métodos estáticos para mejorar su capacidad de comprobación.
Singletons y métodos estáticos pueden ser muy difíciles de probar; a este respecto, los singleton son esencialmente métodos estáticos pero con un nombre diferente. Misko Hevery, que trabaja en el Google Test team, tiene algunos buenos artículos sobre este tema:
Tomando su pregunta a su valor nominal, las llamadas estáticas que es probable la menor cantidad de poder de la CPU La razón es que los métodos normales son dinámicos y requieren una cierta búsqueda en el tiempo de ejecución, mientras que los métodos estáticos están vinculados a un tiempo de compilación.
Habiendo dicho eso, probablemente no importe en su aplicación. La diferencia es realmente pequeña. Si su aplicación hace algo con la interfaz gráfica de usuario, la representación xml, las conexiones a Internet u otra manipulación externa, encontrará que estas actividades hacen que las simples búsquedas de mathod sean un factor enorme.
Incluso si no lo hace, durante la creación de perfiles es más probable que encuentre un solo cuello de botella que contenga su aplicación y descubra que no es la búsqueda de métodos, sino algo de lógica que usted mismo hizo. Por ejemplo, usaste una lista de arrays en lugar de una hashset y el método contains resultó caro.
Así que como el rendimiento en estos casos realmente no importa, recomendaría utilizar las implementaciones de singletons por encima de los métodos estáticos ya que el diseño es un poco más flexible. Aunque fuera de las opciones que ofreciste, dejaría de lado las clases de ayudantes y alinearé los métodos en los de tu pojo.
No se preocupe por absurdas micro-optimizaciones como esa. Preocuparse por la mantenibilidad
Parece que la aplicación está escrita en un estilo totalmente no-OO y podría beneficiarse en gran medida de la eliminación de la mayoría de esos "métodos auxiliares" y ponerlos en su lugar, con los datos que operan.
- 1. genéricos de Java, singletons y métodos estáticos
- 2. winforms .Net En cuanto al uso de métodos pequeños
- 3. ¿Qué es mejor? Los métodos estáticos o métodos de instancia
- 4. Además de singletons, ¿cuáles son algunas de las razones convincentes para usar métodos estáticos en PHP?
- 5. En cuanto a los métodos internos
- 6. Métodos estáticos en PHP
- 7. ¿Cuándo debería escribir métodos estáticos?
- 8. C# métodos estáticos virtuales (o abstractos)
- 9. Desventajas de los métodos estáticos en PHP
- 10. Inicializadores estáticos y métodos estáticos En Java
- 11. Herencia en métodos estáticos
- 12. Métodos estáticos en Java
- 13. ¿Métodos en línea estáticos?
- 14. Métodos estáticos en ASP.NET
- 15. Uso de memoria al convertir métodos a métodos estáticos
- 16. métodos abstractos estáticos en C++
- 17. métodos estáticos abstractas en Scala
- 18. ¿Usando métodos estáticos o ninguno estático en Dao Class?
- 19. Métodos estáticos en clases genéricas?
- 20. Los métodos estáticos en C++
- 21. php métodos estáticos pregunta
- 22. Uso de métodos estáticos privados
- 23. PHP llegar métodos estáticos
- 24. ¿Métodos estáticos en módulos ruby?
- 25. F # Métodos estáticos privados
- 26. En cuanto a FirstOrDefault o SingleOrDefault
- 27. Ventajas de usar métodos estáticos privados
- 28. Java - llamar a métodos estáticos vs manual en línea - sobrecarga de rendimiento
- 29. Métodos estáticos y herencia en Coffeescript
- 30. Métodos estáticos públicos vs métodos públicos
Bien, entonces JDK está escrito en estilo no OO con todo su Arrays.sort(), Long.valueOf(), etc.;) – yanchenko
Hay una gran diferencia entre tener un método estático aquí y allá, y tener toda tu aplicación compuesta de nada más que objetos de valor y toda la lógica en métodos estáticos (que puede no ser el caso, pero así es como lo hiciste sonar) . –
@Michael: pero Android realmente tiene poca memoria. Estoy considerando sus consejos en esta publicación y una publicación en http://stackoverflow.com/questions/1284718/are-static-methods-good-for-scalability – Emerald214