Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

241
Views
¿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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!