At line 1 added 63 lines |
%%(display:none) |
{{{ |
WikiUp |
}}} |
/% |
[{TableOfContents }]\\ |
!!! Documentazione velocizzazione calendario veloce\\ |
\\ |
La lettura del calendario __VELOCE__ (memorizzato in __CALGIO0F__) risulta alquanto lenta, in quanto le schiere di 999 elementi vengono, ogni volta, passate al chiamante, poiché risiedono sia nel programma che le calcola (__B£DIR9__) sia in quello che le utilizza lanciando la __£LC8__.\\ |
\\ |
La /copy __£LC8__ dovrebbe essere oramai una funzione privata della __£G79__, ma vi sono parecchi programmi che la chiamano direttamente, precedenti alla realizzazione della __£G79__, per cui una ristrutturazione generale risulterebbe delicata, in quanto si sarebbe dovuto intervenire in tutti questi chiamanti.\\ |
\\ |
La struttura dei richiami è la seguente:\\ |
\\ |
La __£G79__ lancia __B£G79G__ che decide se chiamare la __£LC8__ in modalità veloce o normale in base alle date di calcolo.\\ |
A sua volta la __£LC8__ lancia, in base al metodo:\\ |
- __B£DIR9__ (veloce)\\ |
- __B£DIR8__ (normale)\\ |
\\ |
\\ |
\\ |
!!! Revisione TST\\ |
Come prima cosa abbiamo analizzato la routine __£LC8__. Ha la funzione __CAL__, valore assunto in quanto __B£DIR8__ e __B£DIR9__ non la testano. Anche il metodo __MEM__ non è testato in questi programmi.\\ |
Inoltre in __TSTLC8__ c'è la funzione __VIS__, che in realtà è una funzione interna del TST che mostra il risultato del calcolo con un £G08.\\ |
È stata qundi fatta pulizia in __TSTLC8__.\\ |
- È stata mantenuta la sola funzione __CAL__, perché molti programmi la riempiono, anche se inutilmente.\\ |
- È stato tolto il metodo __MEM__, dato che nessun programma lo riempie.\\ |
- È stato inserito un flag di I/O per presentare l'output, che ha lo stesso effetto della funzione __VIS__.\\ |
\\ |
NB: nella funzione __VELOCE__ viene ritornato tutto il calendario (da oggi - 6 mesi a oggi + 18 mesi) indipendentemente dagli estremi richiesti, e quindi nella visualizzazione lo si vede tutto.\\ |
\\ |
\\ |
\\ |
!!! Descrizione implemento\\ |
È stata poi realizzata la velocizzazione del calendario veloce, facendo risiedere le schiere nel programma che le utilizza e non in quello che le costruisce, evitando il passaggio di dati.\\ |
Purtroppo, come già detto, non è stato possibile generalizzare questo comportamento, in quanto i dati memorizzati su __CALGIO0F__ differiscono nei due casi: quando sono locali e quando risiedono nel chiamante.\\ |
Abbiamo quindi ritenuto più opportuno una modifica locale, per permettere alla __£G79__ di usufruire della velocizzazione, lasciando la __£LC8__ allo stato attuale di velocità.\\ |
In tal modo si sono ottenuti notevoli benefici: Il miglioramento (alternando la risorsa su cui viene eseguito il calcolo, per evitare l'ottimizzazioine), è indipendente dal numero di chiamate, e si aggira attorno all'80%..\\ |
\\ |
In __CALGIO0F__ (file usato in pochissimi programmi) , dopo tipo e codice risorsa è stato aggiunto un flag (che completa la chiave) che vale:\\ |
__'V'__ - se memorizzazione da __B£DIR9__\\ |
__'T'__ - se memorizzazione dal __B£G79__\\ |
\\ |
Il __B£DIR9__ originale è stato modificato in modo che consideri il flag __'V'__.\\ |
È stato realizzato un nuovo programma, __B£DIR10__, sulla falsariga di __B£DIR9__, che considera il flag __'T'__ e assume che le schiere siano possedute da chi lo chiama.\\ |
\\ |
È stato aggiunto il metodo privato __TURBO__ a __£LC8__, con cui lancia il __B£DIR10__.\\ |
È stato modificato __B£G79G__ per far sì che sia lui il possessore delle schiere, oltre a essere l'unico programma che lancia la __£LC8__ con il metodo __TURBO__.\\ |
\\ |
In questo modo sono presenti due strade parallele:\\ |
- __£LC8 - > VELOCE -> B£DIR9__ (percorso vecchio, inalterato)\\ |
- __£G79 (B£G79G) -> TURBO - B£DIR10__ (percorso nuovo velocizzato)\\ |
\\ |
\\ |
\\ |
!!! Modifica a gestione manulale calendario memorizzato (B£DIR9A)\\ |
È stato inoltre modificato __B£DIR9A__ (attenzione: non è una replica di __B£DIR9__), la guida per aggiornare manualmente i dati di __CALGIO0F__.\\ |
Sono presentate le ultime date di aggiornamento del metodo __VELOCE__ (quello precedente) e di quello __TURBO__ (il nuovo), in quanto potrebbero essere state calcolate in giorni diversi, il base all'ultima data di esecuzione rispettivamente della __£LC8__ e della __£G79__.\\ |
Tuttavia, quando in questo programma si chiede il ricalcolo, vengono eseguiti entrambi i metodi.\\ |
Analogamente la cancellazione viene eseguita per entrambi i calendari.\\ |
\\ |
\\ |
\\ |