| 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.\\ |
| \\ |
| \\ |
| \\ |