08. januar 2002 - 11:59Der er
10 kommentarer og 1 løsning
Optimering af kode
Jeg har følgende kode, som jeg godt kunne tænke mig at få optimeret. Koden skriver linie ud til et javaScript. Håber i kan hjælpe:
Function menu(ind, t) set record=server.createobject(\"adodb.recordset\") record.open \"menu\", conn, 2, 2, 2 record.find \"id=\'\" & ind &\"\'\" response.write udskriv(record(\"text\"), record(\"link\"), t) & vbcr If record(\"svar\") = 0 And record(\"nsvar\") = 0 Then n(t) = 0 End If If record(\"svar\") <> 0 Then n(t+1) = 0 Call menu(record(\"svar\"), t + 1) End If If record(\"nsvar\") <> 0 Then n(t) = n(t) + 1 Call menu(record(\"nsvar\"), t) End If End Function
Function udskriv(text, link, t) For c = 0 To t-1 str = str & \"node[\" Next str = str & \"node[0]\" For c = 0 To t-1 str = str & \".child[\" & n(c) & \"]]\" Next udskriv = \"addchild(\" & str & \".nodeid,\"\"\" & text & \"\"\", \"\"\" & link & \"\"\");\" End Function
Okey, har fundet ud af det er hurtiger og bruge: SQL = \"SELECT * FROM menu WHERE id=\"&ind&\";\" Set record = conn.execute(SQL) Istedet for set record=server.createobject(\"adodb.recordset\") record.open \"menu\", conn, 2, 2, 2 record.find \"id=\'\" & ind &\"\'\"
vbCr = Carriagge return only. Svarer til Chr(13) vbLf = Line feed only. Svarer til Chr(10) vbCrLf = Carriage return and linefeed (Newline). Svarer til Chr(13) og Chr(10)
cool_casper ideen med rekursiv programering er at det kalder sig selv. Dog er du meget velkommen til at komme med at alternativ til koden. Eller evt. en ide.
cool_casper: jeg kan iøvrigt informere dig om at koden tager ca 3.5 sekunder ved gennemløb af knap 200 records, på en pentium 200, med 96 mb ram kørende IIS 5.0.
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.