2011-08-08 15 views
10

Me gusta escribir código realmente legible en Java. Para eso utilizo el patrón de construcción y tengo muchos métodos estáticos. Pero en algún momento llamé o encadené muchos métodos, así que se me ocurrió esta pregunta: ¿tiene algún problema de rendimiento que requiera muchos métodos?¿Cómo afecta la llamada al método el rendimiento en Java?

+0

Si usted, que está utilizando el código, no sabe si existe un impacto medible y grave en el rendimiento, ¿cómo deberíamos saberlo? –

Respuesta

9

Lo que hace el método tiene un efecto mucho mayor que la llamada al método en sí. Esta es una optimización pre-madura que se le aconsejaría evitar.

No tiene idea de cómo las optimizaciones de tiempo de ejecución integradas en la propia JVM afectarán el rendimiento. Serán mucho más inteligentes que tus intentos.

Escriba su aplicación, perfórela y vea si hay mejoras obvias que pueda hacer. Repita hasta que el rendimiento sea aceptable.

1

Hablando en general: no realmente.

Sin embargo, un caso en el que puede proporcionar una cantidad significativa de sobrecarga innecesaria es cuando se realiza una gran llamada recursiva. Si este es el caso y el rendimiento es un problema, debe considerar un enfoque de programación dinámica o implementar su propia pila.

De lo contrario, sus métodos deben ser razonablemente complejos en su lógica para compensar cualquier golpe de rendimiento obtenido por ella.

+0

¿Tiene alguna evidencia para respaldar su reclamo sobre llamadas recursivas grandes? [Lo siguiente implica lo contrario] (http://www.ahmadsoft.org/articles/recursion/index.html) – nerdytenor

+2

@nerdytenor: Sí, lo hago por experiencia personal (no lo aburriré con los detalles y en su lugar lo animo a establecer un punto de referencia usted mismo si tiene alguna duda). Lea la parte inferior de la publicación que ha vinculado a la que explica la discrepancia de rendimiento. Aquí hay una comparación más precisa (en el mismo sitio): http://www.ahmadsoft.org/articles/recursion/ubuntu.html – tskuzzy

+0

+1 para el enlace – nerdytenor

4

La legibilidad casi siempre es el camino a seguir. Existe un impacto en el rendimiento de las llamadas a funciones, pero el código no legible probablemente sufrirá otros problemas de implementación que tendrán un mayor impacto en el rendimiento.

Use la palabra clave final cuando corresponda, de modo que sugiera alinear para estas funciones.

Una situación en la que no desea utilizar muchas llamadas de función son bucles estrechos. Algo que ocurre cientos de miles de veces. Y generalmente estos lugares se pueden optimizar al final si se necesita optimizar el software.

+1

acuerde aquí, y reitere: a menos que esté haciendo cientos de miles de llamadas dentro de unos segundos, esto no es algo de lo que deba preocuparse. –

Cuestiones relacionadas