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


Något bra sätt att undvika stora loop:ar?

Postades av 2007-05-30 09:33:06 - Krister Kauppi, i forum asp.net generellt, Tråden har 13 Kommentarer och lästs av 613 personer

Jag hittade precis ett riktigt svårupptäckt fel som gjorde att minnet på webservern tog slut. Det var ett fel som uppstod ibland så det gick inte riktigt att återskapa felet och det var som att leta efter en nål i en höstack. Äntligen hittade jag det :)

Men hur gör man för att undvika att loopar blir för stora på ett bra sätt?

Om man tex har en loop som ser ut så här:
For X = 0 To Total
...
Next

Så här skulle man kunna göra för att underlätta felsökning och undvika stora loopar:
For X = 0 To Total
...
If X > 10000 Then
Throw New Exception("Loop exception....")
End if
Next

Skulle ni gjort så som ovan eller skulle ni försökt göra det på ett annat sätt? Sen undrar jag i vilka fall man bör lägga in felhantering i större loopar? Själv har jag aldrig sett någon felhantering på detta sätt i loopar men det kanske inte är så dumt? Det enda jag sett några gånger under de år jag jobbat som programmerare är tex en if-sats som kontrollerar räknaren och därefter gör en exit for eller liknande för att undvika evighetsloppar eller större loopar.


Svara

Sv: Något bra sätt att undvika stora loppar?

Postades av 2007-05-30 09:37:40 - Johan Djupmarker

Känns smartare att kolla innehållet på Total innan loopen, då behöver man inte starta ifall talet är för stort.

/Johan


Svara

Sv: Något bra sätt att undvika stora loppar?

Postades av 2007-05-30 09:39:26 - Thomas Vanhaniemi

vad är det egentligen som du vill loopa ut?
Om du behöver så gigantiska loopar måste felet ligga annanstans. Om du nu inte sparar något vid varje iteration i loopen borde minnet inte ta slut på servern, så vad gör du egentligen i loopen?


Svara

Sv: Något bra sätt att undvika stora loppar?

Postades av 2007-05-30 09:41:00 - Andreas Thorarins

kanske onödigt att slänga ett exception , använd "Exit For" istället


Svara

Sv:Något bra sätt att undvika stora loppar?

Postades av 2007-05-30 10:43:37 - Krister Kauppi

Det låter vettigt! För varför skulle man vilja loopa tex 10000 en sedan kasta upp ett fel. Vad tror du om att kasta ett fel gällande loopar rent generellt om "Total" är större den borde?


Svara

Sv:Något bra sätt att undvika stora loppar?

Postades av 2007-05-30 10:45:42 - Krister Kauppi

Det som inträffade i den loop:en som jag hittade felet i var att man lade till rader i ett dataset vid varje iteration. Men min avsikt med mitt inlägg var inte att se på denna specifika situation utan mer se på det ur ett generellt perspektiv. Dvs hur hanterar man detta med loop:ar på ett bra sätt rent generellt och när bör man tex lägga in en felhantering?


Svara

Sv:Något bra sätt att undvika stora loppar?

Postades av 2007-05-30 10:46:01 - Krister Kauppi

Jag tänkte också att en exit for kanske vore bra men sen vid närmare eftertanke så är det kanske inte så bra eftersom det kan leda till att efterföljande kod smäller eller inte fungerar korrekt.


Svara

Sv: Något bra sätt att undvika stora loop:ar?

Postades av 2007-05-30 11:03:14 - Andreas Hillqvist

Varför göra kollen i loopen. Är det så att Total ändras?

If Total > 10000 Then
   Throw New Exception("No Way! That would iterat to many times, Dude!")
End if

For X = 0 To Total
    ...
Next 

Eller:
If Total > 10000 Then
   Total = 10000
End if

For X = 0 To Total
    ...
Next 


Edit:
Samma lösning som Johan Djupmarker föreslog.


Svara

Sv:Något bra sätt att undvika stora loop:ar?

Postades av 2007-05-30 11:08:19 - Krister Kauppi

Jag håller helt med! Johan kom med detta förslag också men hur ofta tycker du man bör göra en sådan koll när man kodar?


Svara

Sv:Något bra sätt att undvika stora loop:ar?

Postades av 2007-05-30 11:11:58 - Andreas Thorarins

kanske ska ha loopen inom "if total > 1000" satsen i stället för exception kastet :)

Men problemet att de blir för stort dataset , vad gör du med det sedan du uppdaterat det? kanske är det där ditt fel ligger. Är det så att du uppdaterara datasettet och sedan uppdaterar databasen med ny informtion som du lagt till i ditt dataset ?


Svara

Sv: Något bra sätt att undvika stora loop:ar?

Postades av 2007-05-30 13:15:22 - viktor ahlberg

En mer intressantare frågeställning, är väll att fråga sig vad stort är. En loop till 100 000 behöver inte vara stor om det inte sker mkt i den eller om den inte använder mycket minne. En loop till 10 kan vara värre om den slukar mycket minne eller gör något tungt.


Svara

Nyligen

  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo
  • 14:25 Tips på verktyg för att skapa QR-k
  • 14:23 Tips på verktyg för att skapa QR-k
  • 20:52 Fungerer innskuddsbonuser egentlig

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 569 170
27 953
271 705
792
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