Abbiamo una classe che è stata identificata correttamente per l'ottimizzazione. Abbiamo eseguito la profilazione e il test, ed è un problema.
Ora abbiamo due possibili approcci per l'ottimizzazione di questa classe:
-
C'è del frutto molto basso. Possiamo riscriverlo in pochi giorni in modo tale che l'interfaccia e i risultati non vengano modificati, quindi non dobbiamo modificare alcun codice che usi la classe. Possiamo vedere che effetto ha questo sulle prestazioni e andare da lì. Questo mi sembra un approccio a basso rischio e basso investimento.
-
Dato che stiamo già apportando modifiche, potremmo fare il massimo per ottimizzare. L'approccio suggerito implementerebbe un motore di terze parti e ci imporrebbe di modificare il codice che utilizza questa classe, nonché di trasformare i dati client esistenti inviati alla classe in un formato utilizzabile dal motore di terze parti. Questo potrebbe non richiedere molto più tempo per il codice, ma sarebbero necessari molti più test. Questo sembra un cambiamento ad alto rischio e ad alto rischio e richiederà un sacco di test extra per assicurarci di non infrangere il codice chiamante e non rompere i dati esistenti del cliente.
Naturalmente non posso testare prima del tempo, ma il secondo approccio probabilmente potrebbe essere eseguito più rapidamente ed essere più efficiente in termini di memoria. Tuttavia, non sono sicuro di quanto sia più veloce, e non sono sicuro che lo sforzo in più valga la pena. Non sono sicuro che una volta apportate le modifiche a basso rischio, considereremmo comunque che il codice è un obiettivo valido per l'ottimizzazione.
Probabilmente puoi indovinare quale approccio preferirei prendere. Sono in contrasto con un collega su questo.
Quindi ecco la mia domanda: la seconda opzione è l'ottimizzazione prematura nonostante il fatto che abbiamo già identificato questo codice per l'ottimizzazione? Qual è l'approccio che dovrebbe essere adottato in questa situazione?