Oggi mi è stato assegnato il compito di migliorare le prestazioni di una pagina ASP classica. Riscrivere il codice in ASP.NET in questo momento non è un'opzione, quindi ho raccolto la sfida per spremere ogni oncia di prestazioni che posso uscire dalla pagina.Suggerimenti sulle prestazioni per l'asp classico?
La pagina è costituita dal "SELECT bla bla FROM bla" di base in un paio di set di record. Un ciclo while itera su quei recordset e dump <tr> <td> stringhe. Nel ciclo del tempo c'è un sacco di condizionali e quant'altro. Esistono 3 subroutine chiamate che utilizzano variabili globali (non le variabili locali passate come parametri).
Quindi niente di veramente scioccante o altro. Prima di iniziare l'ottimizzazione, il ciclo ha richiesto circa 15 secondi. Dei 15 secondi circa 6 sono stati presi dalla query sql.
Dopo aver cambiato alcune cose sono riuscito a portarlo in giro a 7 secondi.
Le cose che ho cambiato intorno sono:
Invece di fare SELECT *, ho selezionato solo le colonne di cui avevo bisogno. La query è passata in media a 4 secondi. È una query piuttosto pesante con visualizzazioni all'interno di viste.
Ho rimosso tutto il cambio di contesto all'interno del ciclo. Così ho cambiato cose come <% = bla%> in Response.Write (bla).
Le 3 subroutine erano definite come funzioni, ma erano utilizzate come sub (senza risultato). Così ho cambiato le funzioni in subs. Questo aiuta?
Dopo aver apportato le mie modifiche, ho scoperto che la maggior parte del tempo era occupata da una delle subroutine. Non ho avuto abbastanza tempo oggi per modificare la subroutine, ma si compone di cose come:
- funzioni Data: DATEADD, DATEDIFF
- funzioni Array: UBound (arr) e indice di riferimento: arr (I)
- funzioni stringa: a sinistra, a metà, a destra, in basso, sostituire
Con ogni chiamata pagina, che subroutine viene eseguito intorno 1600 volte.
Chiunque ha esperienza con l'ottimizzazione delle pagine asp classiche? Hai qualche buon consiglio per l'ottimizzazione? Quello che sto cercando è il miglioramento del codice all'interno di un do ... ciclo statement.
Sono uno sviluppatore esperto di ASP.NET e conosco piuttosto il miglioramento della perfomance in ASP.NET. L'ASP classico usa un "motore" diverso, quindi mi chiedevo se qualcuno là fuori avesse qualche idea su come migliorare le prestazioni del classico ASP.
Grazie!
M
PS: Sì, lo so che il classico ASP utilizza VBScript
È per un'applicazione di pianificazione e la persona che l'ha creata ha creato con entusiasmo un grande ciclo di tempo che mostra la pianificazione di molti record per un intero mese (30 colonne e circa 20 righe). – mghaoui