¿Funcionarán más rápido si hago que mis variables sean definitivas?

Estoy escribiendo para Android (Java).

Estoy declarando int y float como parte de un ciclo continuo.

Algunos de ellos no necesitan ser cambiados después de la declaración.

Si los establezco a todos al declarar, ¿funcionarán las cosas más rápido?

[Editar]

Gracias a todos. En realidad no esperaba que hiciera ninguna mejora, acabo de notar, después de navegar por la fuente de varios grandes proyectos, era bastante común. Aclamaciones

Las cosas no correrán más rápido. La palabra clave final es simplemente compilar el azúcar sintáctico tiempo.


Si fuera realmente static final , entonces usted podría tomar ventaja del cálculo de la compilación e inlining del valor en cualquier refernce. Así, por ejemplo:

 private static final long ONE_WEEK_IN_MILLIS = 7 * 24 * 60 * 60 * 1000L; public void foo(Date date) { if (date.getTiem() > System.currentTimeMillis() + ONE_WEEK_IN_MILLIS) { // No idea what to do here? } } 

El compilador optimizará uno y otro para que termine como:

 private static final long ONE_WEEK_IN_MILLIS = 604800000L; public void foo(Date date) { if (date.getTiem() > System.currentTimeMillis() + 604800000L) { // No idea what to do here? } } 

Si ejecuta un descompilador, lo verá usted mismo.

Aunque la configuración final podría tener un impacto en la velocidad, la respuesta probablemente será diferente para cada VM o dispositivo.

Declararlos definitivos, sin embargo, no duele, y uno incluso podría llamarlo buen estilo de programación.

En cuanto a rendimiento, esto parece casi ciertamente como la optimización prematura. Perfil, encuentra cuellos de botella, replantea tus algoritmos. No pierda su tiempo con "final" sólo por el rendimiento – que apenas resolverá cualquier problema.

Si también lo hace estático (una variable de clase) puede aumentar el rendimiento, y también es una buena práctica de programación utilizar el final para las variables que sabe que no cambiarán. Sin embargo, es posible que no quiera que sea una variable de clase, en cuyo caso, no estoy seguro de si se puede mejorar el rendimiento, pero creo que en muchos casos.

http://docs.sun.com/app/docs/doc/819-3681/6n5srlhjs?a=view

El compilador dinámico puede realizar fácilmente algunas optimizaciones de plegado constantes cuando declara las constantes como variables finales estáticas.

Declare los argumentos del método final si no se modifican en el método. En general, declare todas las variables finales si no se modifican después de ser inicializadas o establecidas en algún valor.

Así, por ejemplo, si tiene código que múltiples dos de sus variables finales, durante el tiempo de ejecución de la máquina virtual puede utilizar lo que normalmente sería dormir / tiempo de inactividad para calcular el resultado de esa multiplicación por lo que no tiene que hacerlo en el ocupado Períodos

Consideraría que es una buena práctica hacer que las variables sean definitivas (puede usar Preferencias de Eclipse> Java> Estilo de código> Limpiar para hacerlo). Si bien el rendimiento podría mejorar, espero que las diferencias sean insignificantes. En mi opinión, ayuda con la legibilidad del código sin embargo (es decir ninguna necesidad de buscar las asignaciones) que es ciertamente una buena cosa ™.

Cuando declaramos cualquier variable final, significa que en el momento de la compilación se identificará y mientras se ejecuta la aplicación JVM no la comprueba para cualquier manipulación, ya que se declara como final (constante). Así que definitivamente estamos removind overhead de JVM.

Por lo que podríamos decir que mejorará el rendimiento, si depende de su caso es la variable es constante que sea final mejor si se hace si estática final …..

Son optimizados por JVM se mantienen en el Pool constante con el Classfile " http://negev.wordpress.com/java-memory-brief/ "

  • File.list () devuelve null para directorio
  • esperar hasta que el wifi esté conectado en android
  • ¿Cómo detener Handler Runnable?
  • OnFling y multitouch - múltiples punteros MotionEvent
  • Comprobar resultCode en BroadcastReceiver de Android?
  • Expresión regular para eliminar todos los caracteres no imprimibles
  • Android: OnClickListener no responde en carga inicial?
  • Vista de cuadrícula personalizada
  • Editext campo al utilizar la entrada de contraseña no ocultar contraseña
  • ¿Qué es más rápido: almacenar datos en una lista o en una base de datos? (Androide)
  • AutoCompleteTextView - deshabilitar el filtrado
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.