¿Qué tan costoso es el Typecasting de objetos en términos de rendimiento?
¿Debo tratar de evitar el Typecasting cuando sea posible?Rendimiento de la conversión de tipos de objetos
Respuesta
Es lo suficientemente barato como para entrar en la categoría de optimización prematura. No pierda el tiempo ni siquiera pensando o haciendo preguntas al respecto, a menos que haya perfilado su aplicación y determinado que es un problema, y lo más importante: no comprometa su diseño para evitarlo.
No, no debería afectar el rendimiento lo suficiente como para importar.
Typecasting tendrá un costo porque la información del tipo de tiempo de ejecución debe verificarse para asegurarse de que el molde funcionará. Comparado con todo lo demás, dudo que esto sea significativo, pero podrías intentarlo y medirlo.
De manera más general, el encasillado es (en mi humilde opinión) un signo de que algo no está bien en el diseño. Claro, a veces no puedes evitarlo (trabajando con colecciones heredadas, por ejemplo), pero definitivamente vería si pudiera eliminarlo.
Según lo que quiere decir con encasillamiento. Hay un "upcasting" que no le cuesta nada y hay un "downcasting" que le cuesta mucho. La respuesta al segundo también comienza con "depende". Por lo general, evito downcasting en mi código porque, desde mi experiencia, si se usa en exceso en el código, significa que el diseño es malo. Lo cual, por otro lado, no necesariamente significa que no debe usarse en absoluto.
JavaWorld: The cost of casting
casting se utiliza para convertir entre tipos - entre los tipos de referencia en particular, para el tipo de fundición operación en la que estamos interesados aquí.
upCast operaciones (también llamados conversiones de ampliación de la especificación del lenguaje Java ) convertir una referencia subclase a una referencia de clase ancestro . Esta operación de fundición es normalmente automática, ya que es siempre segura y puede ser implementada directamente por el compilador.
Downcast operaciones (también llamados conversiones de restricción en el Java Language Specification) convertir una referencia de clase ancestro a una subclase referencia. Esta operación de conversión crea una sobrecarga de ejecución, ya que Java requiere que el molde se compruebe en el tiempo de ejecución para asegurarse de que sea válido. Si el objeto referenciado no es una instancia de sea el tipo de destino para el yeso o una subclase de ese tipo, el intento de yeso no se permite y debe lanzar una java.lang.ClassCastException .
- 1. puntero/dirección de la conversión de tipos
- 2. Implicaciones de rendimiento de conversión C#
- 3. Biblioteca de serialización de objetos de alto rendimiento que admite tipos de suma
- 4. Valores Unboxing Tipos de objetos
- 5. La conversión automática de tipos de FFI llama en Haskell
- 6. Concatenate XML sin la conversión de tipos de cadena
- 7. Conversión implícita entre los tipos de datos
- 8. Conversión de v8 :: Argumentos a C++ Tipos
- 9. Pregunta de conversión de objetos JSON
- 10. .NET boxeo/unboxing vs rendimiento de conversión
- 11. ¿Cómo realizo la Conversión de tipos en Clojure?
- 12. Costo de rendimiento de las comparaciones de tipos
- 13. Rendimiento de tipos anónimos en C#
- 14. Conversión personalizada de objetos específicos en JSON.NET
- 15. Conversión entre tipos en Haskell
- 16. Conversión de objetos XML a Java
- 17. Conversión de archivo plano a objetos Java
- 18. PropertyGrid y tipos de objetos dinámicos
- 19. ¿Cómo escribir un método de conversión genérico que permita la conversión a tipos anulables?
- 20. ¿Tipos anónimos a una matriz de objetos?
- 21. Asignación de objetos y tipos fundamentales
- 22. Conversión de std :: string a mayúsculas: ¿diferencia de rendimiento importante?
- 23. Conversión implícita entre los tipos de colección de Scala
- 24. la conversión de series
- 25. La conversión de los valores de ConfigParser a los tipos de datos de Python
- 26. Conversión de doble a char * en C++ con alto rendimiento
- 27. Declarar tipos sin conversión implícita en C++
- 28. Indexación de diferentes tipos de entidades/objetos con Solr Lucene
- 29. ¿Qué tipos de objetos podemos colocar en estado de vista?
- 30. C# compare dos objetos de tipos desconocidos (incluidos los tipos de referencia y valor)
+1: Si bien puede costar un poco en términos de rendimiento, un buen diseño es la razón más importante para evitarlo. ;) –