bene..
una discussione seria (non che nessuno sia escluso intendo... però vorrei giungere a delle conclusioni chiare e concise)
PREGO TUTTI DI RISPONDERE SOLO !!!DOPO!!! AVER LETTO TUTTO IL POST
--------------------------------------------------
--------------------------------------------------
DEFINIZIONI:
(così non scrivo 10 righe ogni volta che li nomino
non sono vere definizioni rigorose, anzi, ma mi servono per essere più chiaro in quello che segue)
--------------------------------------------------
buffertrue
la pagina viene inviata al client solo quando è stata terminata l'elaborazione
--------------------------------------------------
bufferfalse
la pagina viene inviata al client man mano che l'elaborazione va avanti...
--------------------------------------------------
spaghettistyle
stampare HTML e OUTPUT asp mischiandolo
esempio di una pagina completa:
codice:
<% response.write "io " %>
sono
<% response.write " simone" %>
risultato html:
--------------------------------------------------
writestyle
stampare solo OUTPUT asp usando in pratica un unico tag <% %>
esempio di una pagina completa:
codice:
<% response.write "io sono simone" %>
risultato html:
---------------------------------------------------
---------------------------------------------------
LA QUESTIONE:
siccome mi sto addentrando nel magico mondo dell'ottimizzazione ho cercato di capire (spinto dall'utilizzo della classe CSTRINGBUILDER di baol) come fare a migliorare la velocità per l'output.
ciò che sto sviluppando è la nuova versione del mio forum (che finalmente sarà pubblica).
la mia idea iniziale era quella di non lavorare spaghettistyle (vedi definizioni) ma di lavorare tutto writestyle
il motivo è che ho notato che ad esempio lo snitz lo fa, e così ad occhio mi sembra una via migliore
il fatto che il parser ASP non si trovi di mezzo pezzi di html mischiati a tag asp mi sembra che possa dare prestazioni migliori
così mi sono deciso e ho fatto alcuni test
---------------------------------------------------
---------------------------------------------------
I TEST:
2 pagine
4 test
pagina 1 [writestyle + bufferfalse o buffertrue]
codice:
<%@ Language=VBScript %>
<%
option explicit
response.buffer = true 'oppure FALSE per il secondo test
dim i,StartTime,EndTime,TimeIt
StartTime = timer
for i=0 to 100000
response.write "aaa
"
response.write "bbb
"
next
EndTime = timer
TimeIt = EndTime - StartTime
response.write TimeIt
%>
pagina 2 [spaghettistyle + bufferfalse o buffertrue]
codice:
<%@ Language=VBScript %>
<%
option explicit
response.buffer = true 'oppure FALSE per il secondo test
dim i,StartTime,EndTime,TimeIt
StartTime = timer
for i=0 to 100000
%>aaa
<%
response.write "bbb
"
next
EndTime = timer
TimeIt = EndTime - StartTime
response.write TimeIt
%>
---------------------------------------------------
la prima pagina è lo stile STAMPO TUTTO L'HTML METTENDOLO DENTRO A DELLE STRINGHE ( "<html><head>....." ) e infilandoci ogni tanto in mezzo qualche variabile ASP (altrimenti che uso a fare asp :P)
la seconda pagina è lo stile STAMPO LE VARIABILI ASP CON RESPONSE.WRITE e l'html fisso lo lascio fuori dai TAG ASP
fin qui tutto chiaro? spero di si...
--------------------------------------------------
come seconda cosa mi sono chiesto se ha più senso impostare (dal punto di vista di prestazioni, perchè il motivo per cui a volte si usa il respose.buffer = false è chiaro a tutti [dare all'utente l'ouput mentre è generato... in alcuni casi è utile]) il buffer a true o false..
quindi le due pagine le ho avviate in due modi
col buffer = false e col buffer = true
bene
--------------------------------------------------
--------------------------------------------------
I RISULTATI DEI TEST:
PAGINA1 / BUFFERTRUE (writestyle)
0,1875 sec
PAGINA1 / BUFFERFALSE (writestyle)
62,26563 sec (non è uno scherzo!)
PAGINA2 / BUFFERTRUE (spaghettistyle)
0,109375 sec
PAGINA2 / BUFFERFALSE (spaghettistyle)
54,32813 sec
le dimensioni di tutti gli output sono esattamente
1.400.061 byte
ovvero circa 1,4 MB
differenza bufferfalse pagina1 - pagina2
7,9375 sec
differenza buffertrue pagina1 - pagina2
0,078125
--------------------------------------------------
--------------------------------------------------
CONCLUSIONE E DOMANDA:
avrei previsto che la soluzione più veloce sarebbe stata senza dubbio WRITESTYLE + BUFFERFALSE
invece la classifica delle più veloci è
1. SPAGHETTISYLE + BUFFERTRUE
2. WRITESTYLE + BUFFERTRUE
3. SPAGHETTISYLE + BUFFERFALSE
4. WRITESTYLE + BUFFERFALSE
ottimo. ho scelto proprio la soluzione più lenta.
dai test risulta che la soluzione più performante è senza dubbio la spaghettistyle con buffertrue
l'avreste detto?
considerazioni?
è un test mal posto?