Announcement

Collapse
No announcement yet.

Stopwatch / TheradSleep funktioniert nicht wie erwartet

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Stopwatch / TheradSleep funktioniert nicht wie erwartet

    Hallo,

    ich möchte gerne mit C# eine Zeitmessung durchführen und habe dazu
    unter " http://dotnetperls.com/stopwatch" folgendes (etwas ergänzte) Programm gefunden:

    [highlight=c#]

    using System;
    using System.Diagnostics;
    using System.Threading;

    class Program
    {
    static void Main()
    {
    // Create new stopwatch
    Stopwatch stopwatch = new Stopwatch();

    // Begin timing
    stopwatch.Start();

    // Do something
    // for (int i = 0; i < 1; i++)
    // {
    // Thread.Sleep(1000);
    // }

    for (int i = 0; i < 1000; i++)
    {
    Thread.Sleep(1);
    }

    // Stop timing
    stopwatch.Stop();

    // Write result
    Console.WriteLine("Time elapsed: {0}",
    stopwatch.Elapsed);
    Console.ReadLine();
    }
    }

    [/highlight]

    Die auskommentierte Schleife läuft ungefähr 1 Sekunde, also wie erwartet.
    Die nicht auskommentierte Schleife sollte auch nach ungefähr einer Sekunde beendet sein.

    (Laut Webseite :
    === Output of the program ===
    Time elapsed: 00:00:01.0001477 )

    Aber auf meinem Rechner dauert die Ausführung etwas über 15 Sekunden.
    (Time elapsed: 00:00:15.5943725)

    Woran kann das liegen? Es läuft sonst keine Anwendung außer VS 2010 Express. Oder mache ich einen Denkfehler? Vielleicht kann das Programm ja jemand auf seinem Rechner mal ausführen und mir mitteilen auf welche Zeit er kommt?

    Danke im Voraus für Hilfe

    Ein CSNeuling

  • #2
    Es läuft sonst keine Anwendung außer VS 2010 Express.
    Mal deine Prozessliste angesehen?

    Die Auflösung von 1 msek kann so nicht erreicht werden. Dafür gibt es HighPerformance Timer
    Christian

    Comment


    • #3
      Ja. Es wird von CONHOST (ich denke es ist die Anwendung, die ich gerade ausführe) etwas CPU-Zeit benötigt. Sonst ist alles auf 0.

      Comment


      • #4
        Es hat sich durch einen Neustart des Rechners anscheinend erledigt. Jetzt komme ich sogar teilweise auf Werte, die knapp unter einer Sekunde liegen. Weiss jemand, wie man das begründen kann?
        Grüße
        CSNeuling

        Comment


        • #5
          @Christian
          Ich hatte den zweiten Satz zuerst überlesen.
          Ist es denn so, dass einem Tick genau 100 Nanosekunden entsprechen?

          Comment


          • #6
            Was für ein Tick?

            Thread.Sleep(1);

            Erwartet den Parameter als Millisekunden?


            Ansonsten steht Tick für ein Rechenschritt http://en.wikipedia.org/wiki/System_time
            Christian

            Comment


            • #7
              Ich meine die Ticks-Eigenschaft beim TimeSpan-Datentyp. Ich habe gelesen, dass gilt:
              1 Tick = 100 Nansekunden.

              Comment


              • #8
                http://msdn.microsoft.com/de-de/libr...(v=vs.80).aspx
                Christian

                Comment


                • #9
                  ..... Danke.

                  Comment

                  Working...
                  X