Newsgroup: it.comp.www.asp
Titolo: Test di Efficienza VBS+Access

ciao a tutti.
non è molto che sviluppo in questo linguaggio e ieri mi è venuto in mente di
fare un piccolo script per verificarne l'efficienza.
i risultati mi hanno lasciato un po' perplesso:confused:
brevemente:
access2000 + IIS5 + win2000 server (PIII 800 MHz + 128MB RAM)
database con 1 tabella (T_Date) con un campo DATA (d1)
test1.asp) Apro la connessione,cancello tutti i dati,inserisco x date, leggo
e visualizzo le date inserite,chiudo la connessione.
test2.asp) come sopra ma apro e chiudo la connessione ogni volta che
inserisco una data
test1.asp era piu' veloce ma non permetteva la concorrenza, se 2 utenti si
collegano alla stessa pagina, uno genera errore.
test2.asp era piu' lento ma permetteva piu' utenti contemporanei a grande
discapito del tempo di esecuzione
(inserisco 100 date, 3 utenti contemporanei: 40secondi (!)
con 4 utenti contemporaneamente: 1minuto40secondi (!!) )
spero di aver commesso qualche errore e/o ci siano delle tecniche per
migliorare lo script!!
ringrazio tutti quanti vogliano spendere 2 minuti a verificare quanto detto
da questo incompetente ;)
ciao e grazi
G.
riporto di seguito il codice delle 2 pagine
------------------------
test1.asp
-------------------------
<%'-------------- P A R A M E T R I%>
<%dim cicli
cicli=500
dim DataBase
DataBase="db1.mdb"%>
<%'--------------- P A R A M E T R I%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Test 1</title>
</head>
<%dim tempo1
tempo1=time()%>
<%
function ConnString()
ConnString = "DRIVER={Microsoft Access Driver (*.mdb)};" & _
"DBQ=" & Server.MapPath(DataBase) & ";"
end function
%>
<%
Dim oConn,rs
Set oConn = Server.CreateObject("ADODB.Connection")
oConn.Open(ConnString())
%>
<%dim tempo2
tempo2=time()%>
<body>
<h2>Scrivo <%=cicli%>. Leggo <%=cicli%>. 1 connessione</h2>
<h4>Cancello tutte le date inserite</h4>
<%oconn.execute("delete * from t_date")%>
&nbsp;&nbsp;&nbsp;... Fatto
<h4>Scrivo <%=cicli%> date </h4>
<%dim data,i
data=date()
for i=1 to cicli
oconn.execute("insert into t_date (d1) values (#"&data&"#)")
data=dateAdd("d",1,data)
next%>
&nbsp;&nbsp;&nbsp;... Fatto
<h4>Leggo e stampo Tutto (commentate)</h4>
<font size=1>
<%
set rs=oconn.execute("select * from t_date")
while not rs.eof
response.write "<!--"&rs("d1")&"-->"
rs.movenext
wend%>
</font>
&nbsp;&nbsp;&nbsp;... Fatto
<%dim tempo3
tempo3=time()%>
<h4>Risultati</h4>
<%=tempo1%> all'inizio<BR>
<%=tempo2%> dopo la connessione<BR>
<%=tempo3%> alla fine
</body>
<%oconn.close()
set oconn=nothing
set rs=nothing%>
</html>
------------------------
test2.asp
-------------------------
<%'----------------------- P A R A M E T R I%>
<%dim cicli
cicli=2000
dim DataBase
DataBase="db1.mdb"%>
<%'------------------------- P A R A M E T R I%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Test 2</title>
</head>
<%dim tempo1
tempo1=time()%>
<%
function ConnString()
ConnString = "DRIVER={Microsoft Access Driver (*.mdb)};" & _
"DBQ=" & Server.MapPath(DataBase) & ";"
end function
%>
<%
Dim oConn,rs
Set oConn = Server.CreateObject("ADODB.Connection")
%>
<body>
<h2>Scrivo <%=cicli%>. Leggo <%=cicli%>. <%=cicli%> connessione</h2>
<h4>Cancello tutte le date inserite</h4>
<%
oConn.Open(ConnString())
oconn.execute("delete * from tab")
oconn.close()
%>
&nbsp;&nbsp;&nbsp;... Fatto
<h4>Scrivo <%=cicli%> date </h4>
<%dim data,i
data=date()
for i=1 to cicli
oConn.Open(ConnString())
oconn.execute("insert into tab (d1) values ("&i&")")
data=dateAdd("d",1,data)
oconn.close()
next%>
&nbsp;&nbsp;&nbsp;... Fatto
<%dim tempo2
tempo2=time()%>
<h4>Leggo e stampo Tutto (commentate)</h4>
<font size=1>
<%
oConn.Open(ConnString())
set rs=oconn.execute("select * from tab")
while not rs.eof
response.write "<!--"&rs("d1")&"-->"
rs.movenext
wend
oconn.close()
%>
</font>
&nbsp;&nbsp;&nbsp;... Fatto
<%dim tempo3
tempo3=time()%>
<h4>Risultati</h4>
<%=tempo1%> all'inizio<BR>
<%=tempo2%> dopo aver inserito con le <%=cicli%> connessioni<BR>
<%=tempo3%> alla fine
</body>
<%
set oconn=nothing
set rs=nothing%>
</html>

collegano alla stessa pagina, uno genera errore.
be', se inserisci dati dipende poi dal tipo di lock.
un'altra cosa che potresti fare č cambiare db.
-- 
ben fatto, in fretta, economico: scegline due.

 un'altra cosa che potresti fare č cambiare db.
si', a questo ci avevo pensato, ma visto il numero di utenti che usano
Access non pesavo che le performance fossero cosi' scadenti
mi chiedevo se ci sono modi per creare codice piu' efficiente...

mi chiedevo se ci sono modi per creare codice piu' efficiente...
in effetti mi sembrano un po' bassine in assoluto.  se cerchi in rete
ci dovrebbe essere da qualche parte un articolo di F. Balena
(vbjournal) su come realizzare codice asp "più veloce", ma trattavasi
di consigli generici, tipo non "uscire e rientrare" troppe volte dal
codice html al codice vbscript, spezzare le tabelle in tronconi di tot
record, settare esplicitamente i rst come forwardonly se li devi solo
scorere senza editare ecc., insomma, niente che credo possa essere
risolutivo nel tuo caso...


Ti ringrazio dei consigli.
credo che la soluzione sia cambiare DataBase (o almeno usarne uno degno di
questo nome ^_^)
la cosa che mi sembra strano e' che nessuno sia intervenuto in questa
discussione, secondo me importante.
se gli script che ho scritto non sono "pessimi" questo problema dovrebbe
interessare diverse persone.
se nessuno risponde, forse dovro' leggermi qualche tutorial in piu'.
grazie ancora.
G.
PROGRAMMATORE: colui che ti  risolve in modo incomprensibile un problema che
non sapevi di avere.


Moderatore di it.comp.www.asp
http://www.aspitalia.com
 Enjoy the .NET community!
http://www.dev2dev.it
 La rete ha connesso nuove particelle!

 discussione, secondo me importante.
perchè sono cose di cui si è discusso già ampiamente.


> perchè sono cose di cui si è discusso già ampiamente.
infatti avevo cercato sulle faq e sugli articoli di aspitalia ma non ho
trovato nulla.
vabbe', grazie mille dei consigli dati.
ciao.
G.

 vabbe', grazie mille dei consigli dati.
di nulla.
