¿El oso instanceof
de palabras clave con un impacto relativamente más pesado en la plataforma Android (y más speciffically los teléfonos móviles que funcionan la máquina virtual Dalvik?Impacto de 'instanceof' en Android código Java
Respuesta
No creo instanceof
lleva una impacto más fuerte en la máquina virtual Dalvik opone a la JVM.
Si tiene cualquier duda, se puede ver por sí mismo cuando se ejecuta la aplicación con una herramienta llamada Asignación Rastreador que viene de serie como una herramienta para las DDM.
Eso ayudó gracias. – Michiel
Encontré t hat instanceof es en su mayoría más rápido (alrededor del 60-85% del tiempo). Sin embargo, este porcentaje disminuye cuando se presenta al teléfono actividad de fondo (por ejemplo, GC, tocar, botones, agitarlo, etc.) pero la instancia permanece más rápida por encima del 50% del tiempo. Cuando el número de ciclos se hace muy grande (es decir,> 1000000), la instancia de casi siempre es más rápida. El orden en que se presentan los dos bucles while (es decir, primero el bucle instanceof y luego el bucle de verificación de campo) afecta los resultados, pero instanceof permanece el más rápido.
AbstractParticle circleParticle = new CircleParticle();
int cycles = 100000
long now1 = System.currentTimeMillis();
int i = 0;
while(i<cycles) {
if(circleParticle instanceof CircleParticle) {
i++;
}
}
long timetaken1 = (System.currentTimeMillis()-now1);
long now2 = System.currentTimeMillis();
int j = 0;
while(j<cycles) {
if(circleParticle.type == AbstractParticle.TYPE_CIRCLE) {
j++;
}
}
long timetaken2 = (System.currentTimeMillis()-now2);
if(timetaken1 < timetaken2) {
type1won++;
}
else if(timetaken2 < timetaken1){
type2won++;
}
Log.d("instanceof test","type 1 favoured : "+((float)type1won/(type1won+type2won)));
Su sameple no tiene sentido, i y j no se usan después del bucle, por lo que es muy probable que los bucles se hayan omitido al ejecutar el código ya que no tiene sentido ejecutarlos. –
Comentario sabio, debería verificarlo; gracias. Sin embargo, eso me deja con preguntas: cómo uno era consustantemente más rápido y por qué el tiempo empleado aumentaba cuando aumentaban los "ciclos". Recordaré lo que indicó cuando estoy construyendo pruebas en el futuro. – Michiel
- 1. Evitar instanceof en Java
- 2. Java: Instanceof y genéricos
- 3. complejidad de Java operador instanceof
- 4. java: instanceof y cast combinados?
- 5. Java isInstance vs instanceOf operator
- 6. Reflejo de Java: impacto de setAccessible (verdadero)
- 7. Lo contrario de instanceof
- 8. Patrón de visitante de Java en lugar de instanceof switch
- 9. Java: ¿hay una "subclase" como instanceof?
- 10. Java gama reflexión: isArray vs instanceof
- 11. android (cambiar cadena en código java)
- 12. Análisis de impacto utilizando la aplicación Eclipse para Java con código de marco
- 13. Deshacerse de `instanceof`
- 14. ¿Hay algo como instanceOf (clase <?> c) en Java?
- 15. Herencia de Java y evitar el uso constante de instanceof
- 16. Java - Objeto instanceof nula se evalúa como verdadera y falsa
- 17. cómo implementar "instanceOf" en JSTL
- 18. Javascript instanceof Si Declaración
- 19. instanceof vs isInstance()
- 20. Multiple instanceof cheques
- 21. ¿Cómo puedo bloquear archivos en Android usando código java?
- 22. ejecutar código Java en Java
- 23. Motivo detrás del uso de 'instanceof function() {}'?
- 24. Impacto de las URL multilingües en SEO
- 25. instanceof con la colección genérica
- 26. En Objective-C, ¿cuál es el equivalente de la palabra clave "instanceof" de Java?
- 27. C++: impacto en el rendimiento de las clases GRANDES (con un montón de código)
- 28. PHP 'instanceof' falla con constante de clase
- 29. ¿Genera código Java en Eclipse?
- 30. Impacto en el rendimiento de copiar variables de php
¿Por qué crees que tiene un mayor impacto en Android que en Java? –
Anthony, porque es una VM completamente diferente, basada en registro en lugar de basada en la pila? –
¿Por qué una instancia de crear basura? La instancia de las pruebas si un objeto es una instancia de algún tipo, no involucra la invocación de métodos ni la creación de objetos. ¿Por qué estás haciendo una pregunta sin sentido, uniéndote a conceptos VM no relacionados que no tienen ningún sentido? –