Miglioramento prestazioni
Qualcuno mi può spiegare come si risolve questo esercizio?
Qual è il miglioramento della prestazione di un codice riducendo del 50% il tempo di esecuzione di una parte che nel programma originale consuma l'80% del tempo? Di quanto, invece, se la parte interessata al miglioramento consuma solo il 20%?
Ho usato la formula tempo dopo il miglioramento = tempo influenzato da miglioramento/miglioramento + tempo non influenzato dal miglioramento
80/30+20= 22.6
Prestazione = 1/22.6=0.04
So già che è sbagliato, come dovrebbe essere?
Nel secondo caso, con 20% non saprei come fare dato che 20% è minore di 50%.
Qual è il miglioramento della prestazione di un codice riducendo del 50% il tempo di esecuzione di una parte che nel programma originale consuma l'80% del tempo? Di quanto, invece, se la parte interessata al miglioramento consuma solo il 20%?
Ho usato la formula tempo dopo il miglioramento = tempo influenzato da miglioramento/miglioramento + tempo non influenzato dal miglioramento
80/30+20= 22.6
Prestazione = 1/22.6=0.04
So già che è sbagliato, come dovrebbe essere?
Nel secondo caso, con 20% non saprei come fare dato che 20% è minore di 50%.
Risposte
Supponiamo che \(T\) sia il tempo totale di esecuzione. Se la tua parte corrisponde al \(80\%\) del tempo allora il tempo che occuperà sarà uguale a \(0.8\,T\). Questa parte viene migliorata e a questo punto avrà un miglioramento del \(50\%\). Ci impiegherà quindi metà del tempo a completare la stessa operazione e la sua nuova durata sarà \(0.4\,T\). Siccome il resto del programma rimane inalterato il tempo totale di esecuzione sarà di \(0.6\,T\) che corrisponde quindi ad un miglioramente globale del \(40\%\). Se ai invece che la parte migliorata corrisponde al \(20\%\) del tempo avrai che la sua durata passerà da \(0.2\,T\) a \(0.1\,T\) ma che il restante \(0.8\,T\) rimarrà invariato. Avrai quindi che il tempo totale è di \(0.9\,T\) che è migliore di solo il \(10\%\).