08. januar 2002 - 22:51Der er
17 kommentarer og 1 løsning
Langsomme streng behandling
ASP er meget langsommme med sine strenge. Kan man ikke angive et start størrelse på en streg (f.eks 4096 tegn) så den ikke hele tiden skal udvide den, hver gang man lægger en anden streng oven i?
Den moderne arbejdsplads er i stigende grad afhængig af mødelokaler til at fremme samarbejde, men dette skift medfører også stigende sikkerhedsudfordringer.
Svaret er meget kort nej. VBScript har kun én datatype variant (god med subtyper). Når indholdet er tekst opfatter VBScript subtypen som text automatisk og så er det altid en variabel længde størrelse.
Det er muligvis anderledes med ASP skrevet i JScript, men det kender jeg ikke alverden til :-)
Sikke en omgang vrøvl jeg fik skrevet. \"god med subtyper\" skulle have været \"godt nok med subtyper\" :-)
Jeg har aldrig set en stringbuffer som man kender dem fra eks. JAVA. Den eneste buffer jeg kender til, er den fra response objektet og den tror jeg ikke hjælper meget.
Hvad er det præcist du foretager dig og hvad er din defination af \"langsom\" ? snakker vi om at du vil optimere et par fladbankede nanosekunder eller ?
<script language=\"JScript\" runat=\"Server\"> timerBegin = new Date(); function myTimer() { tmpTime = new Date(); Response.Write(\"<br>\" + (tmpTime.getTime() - timerBegin.getTime())) } </script>
<%
\' Use this class to concatenate strings in a much more \' efficient manner than simply concatenating a string \' (strVariable = strVariable & \"your new string\") Class StringBuilder Dim arr \'the array of strings to concatenate Dim growthRate \'the rate at which the array grows Dim itemCount \'the number of items in the array
Private Sub Class_Initialize() growthRate = 50 itemCount = 0 ReDim arr(growthRate) End Sub
\'Append a new string to the end of the array. If the \'number of items in the array is larger than the \'actual capacity of the array, then \"grow\" the array \'by ReDimming it. Public Sub Append(ByVal strValue) If itemCount > UBound(arr) Then ReDim Preserve arr(UBound(arr) + growthRate) End If
arr(itemCount) = strValue itemCount = itemCount + 1 End Sub
\'Concatenate the strings by simply joining your array \'of strings and adding no separator between elements. Public Function ToString() ToString = Join(arr, \"\") End Function End Class
Dim objBuilder, i Set objBuilder = new StringBuilder
For i = 0 To 500 Call myTimer() Response.Write \" ms.</b> at afvikle dette script.</p>\"
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.