Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Optimera kod

Postades av 2003-07-15 18:17:50 - Michael Beckius, i forum asp - allmänt, Tråden har 15 Kommentarer och lästs av 566 personer

Jag har en sida där jag plockar ut och visar ganska mycket information ur en databas. Denna informationen listar jag rakt uppochner på en html sida som jag genererar med asp. Det är ca 300 poster som jag tar fram med ca 7-8 kolumner i varje post. Dessutom är dessa poster indelade i kanske 30-40 "grupper". Själva select-satsen är enkel, men det tar tid att loopa igenom hela recordsetet och generera alla ca 300 rader html-kod. Luddigt förklarat, jag vet, men jag plockar fram mitt recordset. Därefter skriver jag ut en rubrik, genererar 7-8 rader htmlkod med en post/7-8 kolumner på varje rad, därefter tom rad, rubrik, 7-8 rader igen osv tills jag har stegat igenom hela recordsetet. Jag har provat 3 olika sätt att göra detta för att hitta det snabbaste:

1:a metoden:
En massa asp insprängt i htmlkoden.
<td><%=rs("kolumn1")%></td><td><%=rs("column2")%></td><td><%=rs("kolumn3")%></td>... osv.
Resultat: Mycket långsamt!

2:a metoden:
Innan jag har börjat skriva ut htmlkod på skärmen så genererar jag all htmlkod och sparar i en variabel med namn html. När det sen är dags för htmlkoden så avbryter jag htmlkoden EN gång med <%=Response.Write(html)%> Tanken var att färre växlingar mellan html och asp skulle snabba upp det hela. Resultat: OTROLIGT långsamt! Minneskrävande?

3:e metoden:
En mix av första och andra metoden. Genererar htmlkod som sparas i en variabel: Rubriken + följande 7-8 rader. Skriver sen ut den på skärmen. Genererar nästa, rubrik+efterföljande 7-8 rader. Skriver ut den på skärmen. Genererar nästa, osv... Resultat: Minst långsam.

Vad kan man göra för att får bästa prestanda på den här typen av sidor? Att dela upp informationen på flera sidor är tyvärr INTE ett alternativ. :-(

Om jag skulle konvertera sidan till ASP.Net, skulle detta då innebära några märkbara hastighetsförbättringar?


Svara

Sv: Optimera kod

Postades av 2003-07-15 19:05:19 - Linus Enbom

1:a metoden är inge bra alls...
Om du ska använda asp så ska du helst använda:
<code>
<%
Response.Write "<td>" & rs("kolumn1") & "</td>"
Response.Write "<td>" & rs("kolumn2) & "</td>"
Response.Write "<td>" & rs("kolumn3") & "</td>"
Response.Write "<td>" & rs("kolumn4") & "</td>"
%>
</code>

nåt sånt är ju det bästa sättet...
Men sen så kan du ju göra det ännu snabbare genom att inte ha alla poster på en sida utan skapa ett sid script så att alla poster inte kommer med på en och samma sida..


Testa att ta kanske 25 rader med poster per sida...


Svara

Sv: Optimera kod

Postades av 2003-07-16 02:02:42 - Benni Svensson

Nej, inte helt riktigt. Enligt ASP-Aliansen så tar den tekniken nästan lika lång tid.
De kom fram till att om du skriver allt i en sträng (så långt som möjligt) så blir det en stor prestandard ökning.

Jag har själv testat och kan inte annat än att hålla med:
<code>
<%
Response.Write "<td>" & rs("kolumn1") & "</td>" & _
"<td>" & rs("kolumn2) & "</td>" & _
"<td>" & rs("kolumn3") & "</td>" & _
"<td>" & rs("kolumn4") & "</td>"
%>
</code>
Så här blir det bäst.

Sen hänger väldigt mycket på din databashantering. Om du använder dig av GetRows, så vinner du kanonmycket. Jag har även testat de till bra resultat.


Svara

Sv: Optimera kod

Postades av 2003-07-16 11:56:35 - Andreas Hillqvist

KAn du inte visa koden från hela sidan. Lättare att se flaskhalsarna.


Svara

Sv: Optimera kod

Postades av 2003-07-16 18:34:24 - Michael Beckius

Jag använder mig av "SELECT * FROM tabellnamn WHERE x = 'blabla' ORDER BY y DESC;". Ungefär så. ;-) Sen går jag igenom detta med rs.MoveNext tills allt är klart. Getrows har jag aldrig testat eller satt mig in i hur det funkar. Använder just nu ACCESS databas men kommer byta till MySQL senare. Om ASP.Net skulle innebära en märkbar prestandaökning så kommer jag troligen byta till det med.


Svara

Sv: Optimera kod

Postades av 2003-07-17 10:04:39 - Hobil Haidari

MS påstår att .NET ska kickass, men har ingen större erfarenhet själv av det

Vad du kan göra ytterligare är att utnyttja Response objekt lite mer, istället för att tog lagra mastodont info i html variabeln kan du utnyttja Buffer och Flush metoderna i Response objekt...

Response.Buffer = True ' Buffrar alla data som ska skrivas till html-sidan

' kör dina
Response.Write "1"
Response.Write "1"
Response.Write "1"

'När raden är klar, skicka iväg den genom att anropa Flush metoden
Response.Flush


Det går även att modifiera den till att köra ut n antal rader i taget, på det sättet upplevs laddning av sidan gå snabbare, typ som laddninga av progressiva jpg bilder...

Det löser inte dina prestenda problem men de upplevs mindre på det sättet.

Fast det bästa tipset är att undersöka GetRows spåret, det är bäst, pellesoft har en bra artikel i ämnet, på nätet finns massvis med exempel


Svara

Sv: Optimera kod

Postades av 2003-07-17 10:53:47 - Benni Svensson

Om det nu är som så, att du har som mål att optimera din kod och samtidigt försöka att vinna lite tid, då finns det några saker till att uppmärksamma.
Först. Skriv ALDRIG "select * from MinTabel", detta tar tid att utföra. Ta med alla de fält som du vill ha, på så sätt så får du inte med något onödigt.

GetRows, det är kanske det bästa som jag har stöt på. Jag skall visa ett litet exempel:
<code>
'detta är ett exempel ifrån en befintlig applikation

Dim con,rst,strSQL,arr
strSQL = "SELECT a_Id,Datum,Titel,Innehall FROM t_Arkiv Order BY Datum"
set rst= con.execute(strSQL)
If Not rst.EOF Then
arr=rst.GetRows()
rst.Close
con.Close

For i = 0 TO Ubound(arr,2)

sID=arr(0,i)
sDatum=arr(1,i)
sTitel=arr(2,i)
sInnehall=arr(3,i)

'Här visar jag innehållet ung så här
Response.Write sInnehall
NEXT
</code>
Innan detta så ligger det en data anslutning, och det finns ju mycket mera kod efter arrayen, men innan NEXT.

Ta och titta lite extra på detta, du kommer att bli vinnare.


Svara

Sv: Optimera kod

Postades av 2003-07-17 11:01:30 - Rickard Dehlin

> <b>Vad kan man göra för att får bästa prestanda på den här typen av sidor? </b>

Ett förslag du bör testa är att först hämta allt från databasen, och sedan skriva ut sidan! Tanken är att ha databaskopplingen öppen så kort tid som möjligt, och att hämtat datat i ett svep.

1) Öppna databasen.
2) Hämtat datat du vill ha.
3) För in datat i en array.
4) Stäng databasen.
5) Skriv ut HTML och hämta informationen från din array.


Svara

Sv: Optimera kod

Postades av 2003-07-17 17:32:44 - Michael Beckius

Det var många intressanta svar. Tack för dom. Jag får nog sätta mig och plugga lite om detta. Det verkar ju vara en hel del jag kan ändra på.


Svara

Sv: Optimera kod

Postades av 2003-07-17 22:10:41 - Andreas Hillqvist

Jag vill fortfarande se koden för hela sidan. Är inte nöjd fören jag har fått göra det. ;o)


Svara

Sv: Optimera kod

Postades av 2003-07-18 07:30:02 - Pelle Johansson

Hej Saw, här kan du optimera ytterligare!

Du använder en funktion i en for-sats, den kan du lyfta ut

<code>
For i = 0 TO Ubound(arr,2)

sID=arr(0,i)
sDatum=arr(1,i)
sTitel=arr(2,i)
sInnehall=arr(3,i)

Response.Write sInnehall
Next
</code>

Genom att slå 1 gång istället för varje gång när du kontrollerar hur många poster det finns i arrayen så tjänar du mycket tid (om vi pratar millisekunder alltså) i kombination med många poster.

<code>
TotRecords = Ubound(arr,2)
For a = 0 to TotRecords
....
Next
</code>




Svara

Sv: Optimera kod

Postades av 2003-07-18 10:02:45 - Fredrik Molnar

Ett sätt att optimera är att istället för att köra:
rs("fält")

använda
rs.fields("fält").value


Har inte sett prestandaförbättringar "in action", men jag har "hört" att det skall förbättra....


(obs, gäller förstås inte när du kör mot arrayen, men jag inflikar ändå ifall någon är intresserad.. ;) )


Svara

Sv: Optimera kod

Postades av 2003-07-18 12:21:12 - Andreas Hillqvist

Det ger en större prestanda vinst at använda Explecita fältvariabler:

<code>
Dim Rubrik
Set fldRubrik = rs("Rubrik")
Do Until rs.EOF
Response.Write "<h3>" & fldRubrik.Value & "</h3>"
rs.Move Next
Loop
</code>


Svara

Sv: Optimera kod

Postades av 2003-07-20 03:43:11 - Michael Beckius

Sen är det ju det där med olika databaskopplingar, att dimma eller inte dimma variabler, option explicit eller inte, ASP eller ASP.net, ACCESS eller MySQL, mm mm. Det finns hur mycket som helst och jag vet inte vad som är bäst att göra :)


Svara

Sv: Optimera kod

Postades av 2003-07-20 21:23:11 - Per Hultqvist

Allra snabbast ska vara att ange position i stället för fältnamnet som index. Dvs
<code>
rs.Fields(0).Value
</code>
i stället för
<code>
rs.Fields("Rubrik").Value
</code>
Otympligt men snabbare...


Svara

Nyligen

  • 08:28 Butiksskyltar: Hur upplever utbude
  • 22:31 Slappna av
  • 19:55 kick-off med fokus på hälsa?
  • 19:53 kick-off med fokus på hälsa?
  • 16:24 Föreslå en skönhetsklinik online
  • 16:23 Föreslå en skönhetsklinik online
  • 18:42 Hvor finder man håndlavede lamper
  • 18:41 Hvor finder man håndlavede lamper

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 570 797
27 960
271 761
2 344
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies