Avendo ClassA estendere ClassB rallenta le mie prestazioni di runtime rispetto ad avere classC che contiene tutti i membri di ClassC?

0

Ho una classe con molti metodi. Vorrei raggruppare metodi simili insieme nella loro classe, ma tutti dei metodi devono estendere un'altra classe, ClassC . Quindi stavo pensando di avere ClassA , che contiene il primo gruppo di metodi, estendere ClassB , che estende Class_C, ecc.

Questo è inefficiente in termini di prestazioni di runtime o è praticamente lo stesso?

Nota: ci saranno centinaia di istanze di questa classe in esecuzione contemporaneamente, quindi non vorrei sprecare memoria.

    
posta TAAPSogeking 01.09.2013 - 04:34
fonte

1 risposta

3

Tecnicamente i metodi virtuali rallenteranno un programma perché viene eseguito un controllo di runtime per decidere quale metodo utilizzare. Tuttavia dovresti considerare queste cose prima di preoccuparti:

  1. Ho pochissime informazioni sulle tue classi quindi se l'estensione non rende il codice più leggibile non dovresti farlo.
  2. Tutti i metodi devono essere virtuali in java, quindi suppongo che abbiano ottimizzato notevolmente il dispacciamento in runtime di essi.
  3. Infine non saprai quanto il programma viene rallentato fino a quando non lo provi, generalmente preoccuparti di piccole ottimizzazioni prima che sia necessario ottimizzare è una cattiva idea

Un paio di altre cose che richiedono una mia supposizione da parte mia:

  1. "100's" è un molto piccolo numero nell'ingegneria del software, probabilmente non vedrai alcun rallentamento delle prestazioni in quei pochi oggetti
  2. Mentre più estensioni potrebbero non rallentare il tuo programma in generale ai programmatori piace salvare l'ereditarietà per le relazioni è-a , nella tua situazione potrebbe essere meglio usare composition anziché ereditarietà
risposta data 01.09.2013 - 04:59
fonte

Leggi altre domande sui tag