Avatar billede bluegene Nybegynder
16. maj 2003 - 00:23 Der er 13 kommentarer og
1 løsning

Optimering af script - Forslag behøves

Jeg har følgende script som skal køre i et Load loop som skal køre 3000 + gange

Er der nogen som har et forslag til noget som kan optimere, sænke belastingen på serveren ved kørslen - Alle forslag er velkomne :)

Set LC = PortSenLib.Execute("select Sen"&ServiceCount&", Senid From GlobalSenLib order by id")
Do until LC.eof

SenID = LC("SenId")
SenB  = LC("SenB"&ClientId&"")

if SenID <> "" and SenB <> ""  then
Application("Sen"&SenID&""&ClientId&"") = Smileys(SenB)
end if

LC.movenext
Loop

LC.close
Set LC = Nothing
Avatar billede eagleeye Praktikant
16. maj 2003 - 00:29 #1
Måske du kan lave så SQLen vælger nogle fra, men en WHERE del, så eksvis du kan undgå if sætningen...:

Set LC = PortSenLib.Execute("select Sen"&ServiceCount&", Senid From GlobalSenLib WHERE (SenId is not null) AND (SenB"&ClientId&" is not null) order by id")
Avatar billede eagleeye Praktikant
16. maj 2003 - 00:39 #2
Det vil hjælpe hvis det sker tit at denne betingelse ikke er opfyldt:

if SenID <> "" and SenB <> ""  then

I det der vil man ikke medtager de records hvor den if sætninger ikke er opfyldt.
Avatar billede bluegene Nybegynder
16. maj 2003 - 00:40 #3
eagleeye > god ide, prøver jeg lige - venter lige med points lidt vil gerne have nogen flere forslag på banen, håber det er ok ;)
Avatar billede bluegene Nybegynder
16. maj 2003 - 00:42 #4
eagleeye > Det sker ofte i starten, men efterhånden som siden bliver bygget op vil det ikke indtræffe så ofte :)
Avatar billede eagleeye Praktikant
16. maj 2003 - 00:50 #5
En anden ting kunne være at bruge rs.GetRows og få lagt data i et array:
http://activedeveloper.dk/aspdigital/2001081401.asp
http://www.programmersresource.com/articles/getrows.asp
Det er forskellig mening om hvorvidt det er hurtiger eller ej.

Men din kode ville så blive:


Set LC = PortSenLib.Execute("select Sen"&ServiceCount&", Senid From GlobalSenLib WHERE (SenId is not null) AND (SenB"&ClientId&" is not null) order by id")

if not LC.eof then
  arrRecords = LC.getrows()
end if
LC.close
Set LC = Nothing

for i=0 to ubound(arrRecords,2)
  SenID = arrRecords(1,i)
  SenB  = arrRecords(0,i)

  Application("Sen"&SenID&""&ClientId&"") = Smileys(SenB)
next
Avatar billede bluegene Nybegynder
16. maj 2003 - 01:02 #6
eagleeye > der opstår en fejl i min sub med den sidste kode

Microsoft VBScript compilation error '800a0400'

Expected statement

//global.asa, line 75

End Sub
^
Avatar billede eagleeye Praktikant
16. maj 2003 - 01:09 #7
Det forstår jeg ikke helt. Expented statement, som regl manger der så en end if eller next eller sådan noget.
Avatar billede bluegene Nybegynder
16. maj 2003 - 01:19 #8
eagleeye > Nej, kan det have noget at gøre med størrelsen på mine udtræk ?
Avatar billede eagleeye Praktikant
16. maj 2003 - 01:25 #9
Umiddelbart ikke. Den mangler et eller andet..
Avatar billede bluegene Nybegynder
16. maj 2003 - 01:28 #10
eagleeye > den står inde i et andet loop, kan dette have betydning, har ofte selv oplevet der kan opstå problemet på den konto :-/ ?
Avatar billede bluegene Nybegynder
16. maj 2003 - 01:31 #11
eagleeye > hmm, ser hvis ud til at virke nu - underligt nok :) kan være det var noget med serveren :-/
Avatar billede eagleeye Praktikant
16. maj 2003 - 01:32 #12
Ja det kan måske være.. Det skal være next til en for sætning og loop til en do.:


do xxxx
  for i = cc to yy

  next
loop

Hvis man bytter rundt på loop og next kommer fejlen.
Avatar billede bluegene Nybegynder
16. maj 2003 - 01:35 #13
Virker nu og ser ud som følgende... ændrede lige lige lidt *S*

Set LC = CTC.Execute("SELECT SenB" & ClientId & ", Senid FROM SenBase WHERE SenId IS NOT NULL AND SenB" & ClientId & " IS NOT NULL ORDER BY id")

If Not LC.EOF Then arrRecords = LC.getrows()

LC.Close
Set LC = Nothing

For i = 0 To Ubound(arrRecords, 2)
SenID = arrRecords(1,i)
SenB  = arrRecords(0,i)

Application("Sen" & SenID & ClientId) = Smileys(SenB)
Next
Avatar billede bluegene Nybegynder
16. maj 2003 - 01:43 #14
eagleeye > mange takker for hjælpen / de forskellige tips :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester