Perché è necessario il ploymorfism di runtime? [chiuso]

-9

Perché è necessario il ploymorfism di runtime? dare un esempio reale che "perché è venuto alla luce quando abbiamo il polimorfismo del tempo di compilazione ??" Poiché il polimorfismo del runtime richiede molto carico di manutenzione delle tabelle e dei puntatori virtuali. Quali sono i vantaggi del "polimorfismo di runtime" rispetto al tempo di compilazione con un buon esempio. Poiché la decisione di runtime può essere stabilita in tempo compilato / statico se conosciamo già il processo e con gli input dell'utente. Perché stiamo compromettendo con le prestazioni e facendo il polimorfismo di runtime ?? Si prega di dare un esempio reale e buono

    
posta user104449 28.03.2017 - 14:30
fonte

1 risposta

4

As runtime decision can be made compile/static time if we know the process already and with user inputs

No, noi non possiamo prendere decisioni in modo statico. Non possiamo nemmeno decidere qualcosa di così semplice come se il programma si fermasse o meno.

In effetti, IFF potremmo decidere quale funzione avremmo chiamato, quindi potremmo trasformare automaticamente il polimorfismo di runtime in polimorfismo in fase di compilazione. Questo è chiamato de-virtualization e i compilatori C ++ lo fanno già come ottimizzazione, ma non sempre funziona, perché, avete indovinato, equivale a risolvere il problema di interruzione.

Nota: un dynamic compiler può eliminare l'invio dinamico e quindi abilitare l'inlining, ad esempio. Un compilatore de-optimizing dynamic può anche compiere un ulteriore passo avanti ed eseguire Inlineing speculativo : può semplicemente integrare il metodo assumendo che la ricerca porti sempre allo stesso metodo e quando si scopre che questa ipotesi è sbagliata, il compilatore può semplicemente de-inline il metodo (e quindi potenzialmente inline di nuovo il metodo nuovo ). Oppure può costruire una cache di tipi precedentemente visti e i metodi corrispondenti; può quindi integrare i metodi in quella cache, incorporare la cache nel sito di chiamata o entrambi. Le parole chiave da cercare sono Cache in linea monomorfica , Cache in linea duomorfa e Cache in linea polimerica ; la mia descrizione è estremamente semplificata. Questa area generale è denominata Ottimizzazione adattiva .

    
risposta data 28.03.2017 - 15:02
fonte

Leggi altre domande sui tag