Avatar billede steen_hansen Forsker
23. januar 2005 - 00:57 Der er 25 kommentarer og
1 løsning

Script virker dræbende langsomt

Kan dette optimeres?

<select size="1" name="yearofbirth" class="input1">

<%
Dim vOption
vOption = Year(Date)

For option_new = vOption To 1900 Step - 1
%>

    <option value="<%=option_new%> value="<%=option_new%>"><%=option_new%></option>

<%
If option_new = 1900 Then

End If

Next
%>

</select>

Når jeg forsøger at tilgå siden, er siden nogle sekunder langsommere, det virker som om, at det ovenstående script sætter serveren på en mindre prøve.
Avatar billede softspot Forsker
23. januar 2005 - 01:36 #1
Hvad sker der hvis du gør sådan her:


<select size="1" name="yearofbirth" class="input1">

<%
Dim vOption
vOption = Year(Date)

For option_new = vOption To 1900 Step - 1

    Response.Write "<option value=""" & option_new & """ value=""" & option_new & """>" & option_new & "</option>"

If option_new = 1900 Then

End If

Next
%>

</select>


Er det meningen at den sidste IF skal gøre noget eller...? Hvis ikke, så prøv at fjerne den.
Avatar billede gammelhat Nybegynder
23. januar 2005 - 01:37 #2
Måske.. Skriv hele outputtet til en fil, og inkluder filen. Så behøver du kun køre din loop én gang om året. Jeg har ikke lige testet hvor meget hurtigere det er..

<%
Dim vOption
Dim filename

vOption = Year(Date)
filename = vOption & ".txt"

Sub MakeYearOfBirthFile()
    Dim fso
    Dim file

    Set fso = Server.CreateObject("Scripting.FileSystemObject")

    If Not fso.FileExists(Server.MapPath(filename)) Then
   
        s = "<select size=""1"" name=""yearofbirth"" class=""input1"">"
       
        For option_new = vOption To 1900 Step - 1
            s = s & "<option value=""" & option_new & """>" & option_new & "</option>"
   
            If option_new = 1900 Then
            End If
        Next
   
        s = s & "</select>"   
       
        Set file = fso.CreateTextFile(Server.MapPath(filename), true)
        file.Write s
        file.Close
   
        Set file = Nothing   

    End If
   
    Set fso = Nothing
End Sub


Call MakeYearOfBirthFile 'opret år.txt fil

Server.Execute(filename) 'inkluder fil
%>
Avatar billede softspot Forsker
23. januar 2005 - 01:45 #3
Caching - fed idé! :D
Avatar billede steen_hansen Forsker
23. januar 2005 - 01:46 #4
softspot: Ja, når scriptet når år 1900, skal loopen stoppe.

Jeg er på vej i seng, prøver Jeres forslag af i morgen :)
Avatar billede softspot Forsker
23. januar 2005 - 01:47 #5
Loopet stopper automatisk da det er et for...next loop med tæller, så den kan du godt fjerne...
Avatar billede steen_hansen Forsker
23. januar 2005 - 01:50 #6
Det har du ret i, og der var en dobbelt value="<%=option_new%>

Prøver Jeres forslag af i morgen :)
Avatar billede gammelhat Nybegynder
23. januar 2005 - 01:50 #7
Jeg har forresten og tilrettet din <option>

du har 'value' stående to gange
Avatar billede gammelhat Nybegynder
23. januar 2005 - 01:51 #8
okay, den opdatede du selv :)
Avatar billede softspot Forsker
23. januar 2005 - 01:51 #9
I øvrigt stopper loopet ikke af at der laves en forgrening uden noget indhold. Hvis loopet skulle stoppes "utidigt" skulle du bruge Exit For... men det er der som sagt ikke nogen grund til her. :)

Godnat og sov godt :)
Avatar billede steen_hansen Forsker
23. januar 2005 - 01:52 #10
Ja, jeg fik kopieret det ind 2 gange, men det er fjernet. Kan dårligt holde øjnene åbne, snakkes :)
Avatar billede steen_hansen Forsker
23. januar 2005 - 02:09 #11
softspot, dit script er bare en lille omskrivning fra HTML til ASP, det vil ikke ændre noget. NU er jeg den, der er smuttet, snakkes :)
Avatar billede softspot Forsker
23. januar 2005 - 02:21 #12
Ja, det ved jeg, men skiftet mellem script og HTML kunne være en faktor... men det kan jeg forstå at du har testet dig ud af så... :)
Avatar billede softspot Forsker
23. januar 2005 - 02:22 #13
og du skifter jo ikke bare een gang, men flere 100 gange... giv det en chance ;)
Avatar billede steen_hansen Forsker
23. januar 2005 - 11:16 #14
Uanset hvordan og hvorledes, så er det jo en løkke, der skal gennemløbes hver gang man kommer ind på siden:

<select size="1" name="yearofbirth" class="input1">

<%
Dim vOption
vOption = Year(Date)

For option_new = vOption To 1920 Step - 1
%>

    <option value="<%=option_new%>"><%=option_new%></option>

<% Next %>

</select>


Så jeg tror jeg copy/paster hver enkelt linie og retter det til manuelt:

<option value="2005">2005</option>
<option value="2004">2004</option>
<option value="2003">2003</option>
.........

- for resultatet skal være, at alle år fra dette og tilbage til 1900 eller måske 1920 skal listes ud i boksen. Så skal jeg bare huske at føje et nyt år til ved hvert nytår :)

Lægger I ikke et svar, begge to? :)
Avatar billede softspot Forsker
23. januar 2005 - 11:37 #15
Jeg skal ikke have nogle point - ellers tak :)

Jeg har lige testet det med skift fra script til HTML og tilbage og det giver ikke nogen nævneværdig forskel. Faktisk kan IIS slet ikke registrere noget tid på forspørgslen så hurtigt går det (3GHz Pentium). Når jeg skruer op for antallet af gennemløb (2000 i stedet for 100) registrerer den lidt, men tiderne er stort set ens for begge løsninger - så du havde ret i at det ikke gør den store forskel... i det mindste ikke med denne mængde af data.
Avatar billede steen_hansen Forsker
23. januar 2005 - 12:20 #16
Ok, softspot, så får du et klap på skulderen, et fast håndtryk og mange tak for indsatsen :)

Jeg HAR indsat alle årstal, og nu skal siden bare læses ind: http://www.include.dk/newuser/ - det funker fint-fint, selvom det ikke bliver automatiseret :)
Avatar billede cpufan Juniormester
23. januar 2005 - 13:06 #17
<select size="1" name="yearofbirth" class="input1">

<%
Dim vOption
vOption = Year(Date)
while voption > 1900

%>

    <option value="<%=voption%>"><%=voption%></option>

<% voption = voption - 1
wend %>

</select>
Avatar billede steen_hansen Forsker
23. januar 2005 - 13:18 #18
cpufan, jeg har selv forsøgt den, men løkken køres stadig igennem, og tager ca. lige så lang tid. Men ellers et godt forslag :)
Avatar billede softspot Forsker
24. januar 2005 - 10:22 #19
Hvad er det egentlig for en maskine du sidder ved (CPU hastighed og netforbindelse hastighed osv.). Min mistanke går lidt på at det måske er på klienten at tiden går og ikke på serveren. Kan du evt. be-/afkræfte dette?

Jeg har erfaring med (fra VB 6.0 og alm. applikationsprogrammering), at listbox og combobox kunne være ret tunge/tidskrævende at fylde data i, hvis der var mange elementer. Det kan være fordi der slåes op sekventielt ved hver indsættelse...
Avatar billede steen_hansen Forsker
24. januar 2005 - 12:00 #20
Jeg har en P4 1.8 GhZ/2MB ADSL, så der er ikke noget i vejen med hastigheden - selvom CPU'en godt kunne være hurtigere. Der burde ikke være noget problem i at trække det overhovedet.

Mens jeg har Jer: Prøv at se include.dk i MSIE. Siden vises rigtigt i NS, FF, Opera, men ikke i MSIE. Er der nogen af Jer, der kan få øje på en (garanteret lille) fejl?
Avatar billede steen_hansen Forsker
24. januar 2005 - 23:02 #21
gammelhat, smid lige et svar :)
Avatar billede softspot Forsker
24. januar 2005 - 23:22 #22
"Server Unavailable"... det ser ens ud i både MSIE og FF ;)
Avatar billede steen_hansen Forsker
24. januar 2005 - 23:24 #23
Ja, Squ! :oD Jeg har lige skiftet til concor.dk, og så er der problemer med deres Kontrolpanel og include.dk. Flot! :)
Avatar billede steen_hansen Forsker
25. januar 2005 - 00:01 #24
gammelhat? :)
Avatar billede gammelhat Nybegynder
25. januar 2005 - 00:03 #25
nej tak

:)
Avatar billede steen_hansen Forsker
25. januar 2005 - 00:05 #26
I er da nogle hænger... :) Jeg takker mange gange for hjælpen, drenge, I skal i det mindste have tak for indsatsen :)
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