nel secolo scorso, sviluppai un'applicazione in C che,
leggendo dal db generava una matrice di valori
applicava un algoritmo matematico
infine memorizzava il risultato
i pc, significativamente lenti per le caratteristiche del tempo,
presentavano tempi di esecuzione gravosi
nella necessità di ridurre i 48 secondi, causati da 225 letture al db (singole select),
decisi di usare delle select con join di tabelle, come unica azione che mi era possibile
fui costretto a modificare delle sub aumentando di 200 linee il programma
da 1500 righe a 1700, ma così facendo ridussi a 9 le letture al db (select in join)
il beneficio fu evidente, ottenendo un tempo di preparazione della matrice di 14 secondi
per l'analisi dell'eseguibile usai PLIST un tool di Microsoft, di cui riporto il risultato
questa analisi é stata la via che ho seguito nel tempo, cercando di ridurre gli accessi al db
anche a costo di creare query con join complesse
ovviamente, tutte le analisi dell'exe sono state fatte a pc riavviato ogni volta,
le tabelle erano ben indicizzate e l'indicizzazione non é mai stata modificata durante le analisi
codice:FR12 -- Vers. 03.1 ------------------------------ tempo di preparazione : 48 sec tempo di calcolo : 0 sec tempo di memor.risultato : 5 sec tempo totale di elab.ne : 53 sec FINE DEL PROGRAMMA Microsoft PLIST Version 1.00 Profile: Function timing, sorted by time. Program Statistics Total time: 57542.664 milliseconds Time outside of functions: 179.013 milliseconds Call depth: 8 Total functions: 29 Total hits: 664 Function coverage: 79.3% Module Statistics for fr12.exe Time in module: 57363.651 milliseconds Percent of time in module: 100.0% Functions in module: 29 Hits in module: 664 Module function coverage: 79.3% Func Func+Child Hit Time % Time % count Function 37687.180 65.7 37687.180 65.7 225 sub_comp_for_2 (fr12o.c:892) 6864.491 12.0 6864.491 12.0 25 sub_comp_for_3 (fr12o.c:926) 3338.205 5.8 3340.597 5.8 25 sub_upd_comp (fr12o.c:1361) 3067.577 5.3 51004.538 88.9 10 sub_comp_for (fr12o.c:816) 1427.693 2.5 50287.469 87.7 2 sub_car_for (fr12o.c:709) 1045.403 1.8 1405.170 2.4 1 sub_calcolo (fr12o.c:1090) .... FR12 -- Vers. 03.2 ------------------------------ tempo di preparazione : 14 sec tempo di calcolo : 0 sec tempo di memor.risultato : 3 sec tempo totale di elab.ne : 17 sec FINE DEL PROGRAMMA Microsoft PLIST Version 1.00 Profile: Function timing, sorted by time. Program Statistics Total time: 19592.594 milliseconds Time outside of functions: 399.423 milliseconds Call depth: 10 Total functions: 33 Total hits: 478 Function coverage: 78.8% Module Statistics for fr12.exe Time in module: 19193.171 milliseconds Percent of time in module: 100.0% Functions in module: 33 Hits in module: 478 Module function coverage: 78.8% Func Func+Child Hit Time % Time % count Function 7258.117 37.8 13607.582 70.9 9 sub_comp_for_a (fr12.c:922) 4032.109 21.0 4032.109 21.0 47 sub_upd_comp_1 (fr12.c:1534) 3772.645 19.7 6312.133 32.9 25 sub_comp_for_3 (fr12.c:1074) 694.260 3.6 14304.358 74.5 9 sub_car_for_1 (fr12.c:860) ....

Rispondi quotando