webForumDet fria alternativet
Logga in / Bli medlem

Do until Rs.Eof eller Do while not Rs.Eof?

ASP

9 svar · 458 visningar · startad av pRob3

Medlem sedan maj 2003151 inlägg
Trådstart#1

Do until Rs.Eof eller Do while not Rs.Eof vilket är det bästa för servern/snabbast?

Medlem sedan maj 20031 173 inlägg
#2

jag tror inte att det spelar någon roll, men jag hade nog valt alternativ ett, känns dumt att använda "not" i sitt vilkor.

Medlem sedan nov. 20014 054 inlägg
#3

Re: Do until Rs.Eof eller Do while not Rs.Eof?

pRob3 skrev:

Do until Rs.Eof eller Do while not Rs.Eof vilket är det bästa för servern/snabbast?

Spelar nog ingen roll, rent prestanda mässigt! Frågan är bara vilken man vill använda sig av...

Av ren vana använder jag Do Until Rs.Eof

Medlem sedan sep. 20026 425 inlägg
#4

..eeeeller varför inte skippa Do-loopen och Recordset helt och köra med GetRows() som är mycket snabbare? En version med paging finns där också. :D

Medlem sedan juni 200032 967 inlägg
#5

Personlig reflektion:

GetRows() går fetbort!
Det är alldeles för klurigt att arbeta med, så den lilla prestandavinst man eventuellt kan göra, gör det inte värt all extra utvecklingstid om man har en applikation med mycket data.

Mitt tips är: gör det enkelt.
Jaga inte millisekunder på fel ställe, det finns andra ställen att optimera på, som garanterat ger mer vinst.

Jag har arbetat i en tung applikation i tre år nu, där modulen som hanterar databastrafiken endast använder arrays för att skyffla data, och det är ett helvete när man är tvungen att ändra på en join inne i en komponent, och helt helt plötsligt är alla arrayplatser förskjutna så ingenting fungerar.

Mvh

Medlem sedan dec. 20003 887 inlägg
#6

Håller med @nders där. Undvik strängsammanlänkning i loopar och sådana hemskheter istället. Själv använder jag mig alltid av While Not rs.EOF ... Wend, som jag tycker är smidigast.

Medlem sedan juni 200032 967 inlägg
#7

För att svara på originalfrågan också:

Jag har för mig att Charles Carroll vid något tillfälle för x antal år sedan berättat (kan ha varit i ett mail, eftersom jag inte hittar källan på nätet), att While - Wend-loopen är något snabbare än do - loop. Jag minns dock inte varför.

Jag använder while-wend eftersom jag alltid gjort det.
Jag började nog med det p.g.a. ovanstående anledning. När Charles Carroll talar lyssnar man. :)

Medlem sedan sep. 20026 425 inlägg
#8

Intressant, @nders och Engine^! Dock kan ju GetRows() ge stora prestandavinster ju fler poster man har i en tabell, eller?
Och detta med att arrayerna är förskjutna - jag tycker inte att det har varit något stort problem för mig. (Ok, @nders jobbar troligtvis på en helt annan nivå...?) Det är ju nästan enbart att ändra talen med +1, +2, +3 eller vad det nu kan vara?

Charles Carroll driver tydligen bland annat Learnasp.com. Var bara tvungen att söka.. ;)

Medlem sedan juni 20022 599 inlägg
#9

m_soderlund skrev:

Dock kan ju GetRows() ge stora prestandavinster ju fler poster man har i en tabell, eller?

Jag skulle nog säga att det ger vinster framförallt om man förflyttar sig mycket i ett recordset. Dock måste ju data på nåt sätt komma in i arrayen/matrisen vilket medför att GetRows internt naturligtvis gör nån form av do-while-not-rc.eof-loop som antagligen inte är så himla mycket snabbare än samma loop direkt i ADO:n.

Medlem sedan aug. 20013 824 inlägg
#10

Engine^ skrev:

Håller med @nders där. Undvik strängsammanlänkning i loopar och sådana hemskheter istället. Själv använder jag mig alltid av While Not rs.EOF ... Wend, som jag tycker är smidigast.

Håller med i på båda svaren :)

264 ms totalt · 4 externa anrop · v20260731065814-full.51f67c91
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)
129 ms — ändringar (db)