Son múltiples llamadas al mismo método en la misma instrucción optimizado por el compilador?

En Magnus:

Digamos que hago algo como esto en Java 8 (Android específicamente)

String name = someObject.getName() != null ? someObject.getName() : "null";

y el método getName()podría tener una gran cantidad de llamadas a otros métodos para resolver el nombre. También supongo que estoy llamando este código con bastante frecuencia.

¿Sería mejor, se refiere a rendimiento, hay que hacer algo como esto en su lugar?

String name = someObject.getName();
name = name != null ? name : "null";
Eugene:

Esto se ve como una optimización posible, llamada CSE ; un JVMyo sepa que lo hace (pero no está seguro acerca de Android).

Pero esto depende en gran medida lo getNamehace, si se asigna internamente otros objetos y hace algunas otras cosas. Por desgracia no puedo decir cómo para demostrar que estoy equivocado o aquí mismo (puede ser que necesite para investigar); la verdad es que tengo la costumbre de hacer esto por mí mismo. Por ejemplo:

for(int i=0;i<list.size();++i){

}

Trato de extraer siempre int size = list.size()antes del bucle; incluso si esto en mi entendimiento está sujeto a scalar replacementla optimización.

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=203652&siteId=1
Recomendado
Clasificación