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


Snabbast loop?

Postades av 2002-11-06 08:45:55 - Johan Bovin, i forum c# (c-sharp), Tråden har 2 Kommentarer och lästs av 867 personer

Tjena.
Vill ju hålla lite liv i det här forumet så jag tänkte kolla om nån vet om och i såfall hur stor skillnad det är att loopa igenom en ArrayList på lite olika sätt:
1, använda en vanlig for dvs for(int i=0;i<array.Count;i++)
2, använda foreach(string hej in array)
3, använda for(IEnumerator iter=array.GetEnumerator();iter.MoveNext())

Eller är det kanske nån annan konstruktion...

/Johan - alltid undrande


Svara

Sv: Snabbast loop?

Postades av 2002-11-06 12:04:28 - Patrik Löwendahl

jag har inte gjort några prestanda tester på det där men lite info kan du få ..

för det första är typ 2 och 3 exakt samma, enda skillnaden är att du gör det mauellt istället för att språket gör det åt dig..

vad gäller hur den accessar så har enumerator varianten en intern index som den iterer igenom för varje movenext du använder ...

skulle inte tro att det skiljer speciellt mycket dem emellan ...

Däremot är inte variant 2 och 3 möjliga att förändra, då objekten som kommer tillbaka är sk Immutable ...


Svara

Sv: Snabbast loop?

Postades av 2002-11-06 12:27:00 - Johan Bovin

Trash hade gjort lite tester och enligt honom var alternativ 1 snabbast och 2 långsammast.
Han kan kanske själv redogöra för eventuella testresultat.

/Johan
-------------------------------------
Gjorde själv ett litet testprogram enlig följande:
<code>
Console.WriteLine("Enter number of turns");
int j=int.Parse(Console.ReadLine());
ArrayList list=new ArrayList(j);
int i;
for(i=0;i<j;i++)
{
list.Add(i.ToString());
}
DateTime first=System.DateTime.Now;
for(i=0;i<j;i++)
{
string tmp=list[i].ToString();
}
TimeSpan ts = DateTime.Now.Subtract(first);
Console.Out.WriteLine("(For)Total time: " + ts.TotalMilliseconds.ToString());
first=System.DateTime.Now;
for(IEnumerator iter=list.GetEnumerator();iter.MoveNext();)
{
string tmp=iter.Current.ToString();
}
ts = DateTime.Now.Subtract(first);
Console.Out.WriteLine("(For enumerator)Total time: " + ts.TotalMilliseconds.ToString());
first=System.DateTime.Now;
foreach(string tmp in list)
{
string tmp2=tmp;
}
ts = DateTime.Now.Subtract(first);
Console.Out.WriteLine("(Foreach)Total time: " + ts.TotalMilliseconds.ToString());
</code>
Resultatet blev enlig följande:
j=100 000<br>
(For)Total time: 20,0288
(For enumerator)Total time: 30,0432
(Foreach)Total time: 30,0432
<br>
j=300 000<br>
(For)Total time: 60,0864
(For enumerator)Total time: 80,1152
(Foreach)Total time: 80,1152
<br>
j=500 000<br>
(For)Total time: 90,1296
(For enumerator)Total time: 140,2016
(Foreach)Total time: 140,2016
<br>
j=700 000<br>
(For)Total time: 140,2016
(For enumerator)Total time: 200,288
(Foreach)Total time: 180,2592
<br>
j=900 000<br>
(For)Total time: 170,2448
(For enumerator)Total time: 250,36
(Foreach)Total time: 250,36
<br>
Det som jag tyckte var intressant var att helt plötsligt så tog IEnumerator konsruktionen längre tid...upplevde detta under flera test. Vet inte om GC:en satte in samtidigt eller vad. Men slutsatsen blir enlig följande: har du under 100 000 strängar spelar det kvitta. Annars använd For eller om du måste foreach






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 154
27 952
271 704
548
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