Do until Rs.Eof eller Do while not Rs.Eof vilket är det bästa för servern/snabbast?
Do until Rs.Eof eller Do while not Rs.Eof?
9 svar · 458 visningar · startad av pRob3
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.
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
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
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.
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. :)
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.. ;)
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.
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 :)