Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

233
Vistas
¿La herencia puede afectar el rendimiento de una aplicación?

Me pregunto si el rendimiento de una aplicación podría mejorarse utilizando la mayor cantidad posible de superclases. Mi pregunta es sobre Kotlin, pero supongo que la respuesta será la misma para Java.


Digamos que tiene este esquema de herencia (la clase de la derecha es una subclase de la clase de la izquierda):
A < B < C < D < E < F < G < ... Y así sucesivamente hasta Z.

Decir que no necesita todas las cosas definidas en todas las subclases, sino solo los atributos y las funciones de la clase A. Por una razón oscura, su código usa solo la clase Z.

Mi pregunta es bastante simple: si cambia su código para usar solo la clase A en lugar de la clase Z, ¿el código tendrá un mejor rendimiento?

Gracias de antemano por sus respuestas.

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Si

"cambie su código para usar solo la clase A en lugar de la clase Z"

incluye construcción, entonces hay una respuesta trivial:

Crear y almacenar un objeto con menos atributos/campos es más económico que crear un objeto con más atributos, tanto en términos de memoria como en términos de tiempo de inicialización.

Aparte de eso, no esperaría un efecto significativo en el rendimiento.


Dicho esto, no me preocuparía por el rendimiento aquí: elija el tipo que proporcione la mejor abstracción para lo que quiere hacer con esto. Si a su código no le importa qué subclase específica está usando y no necesita ninguna de las funciones proporcionadas por las subclases, use el tipo más general. De esa manera, su código sigue siendo más flexible. Sin embargo, si su código necesita dicha funcionalidad en algún momento, es decir, tiene que introducir conversiones más adelante, entonces ha ido demasiado lejos.

over 4 years ago · Santiago Trujillo Denunciar

0

La respuesta es sí. Por ejemplo, si invoca el método z.someMethod(). El Hotspot buscará primero el método en la clase Z. Si HotSpot no encuentra el método de destino, buscará el método en el padre de Z. Y continúe estos pasos hasta que encuentre el método de destino. Por lo tanto, llevará más tiempo buscar el método si la cadena de herencia es larga.

Sin embargo, HotSpot usa algo de caché para acelerar el proceso.

Llamadas virtuales HotSpot

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda