webForumDet fria alternativet

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

9 svar · 458 visningar · startad av pRob3

pRob3Medlem sedan maj 2003151 inlägg
#1

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

CalevanMedlem 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.

Fredde MannenMedlem 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

m_soderlundMedlem 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

@ndersMedlem sedan juni 200032 969 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

Engine^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.

@ndersMedlem sedan juni 200032 969 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. :)

m_soderlundMedlem 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.. ;)

nikoMedlem 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.

mikulMedlem 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 :)

129 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)