C# Stopwatch Problem

Suprimos

Lieutenant
Registriert
Sep. 2009
Beiträge
516
Hallo,
ich habe ein Programm geschrieben welches die n'te-Fibonaccizahl einmal rekursiv und einmal iterativ berechnet.
Nun wollte ich dazu mal die Zeit stoppen wie lange das geht. Stopwatch lief mir am meisten bei der google Suche über den Weg.


Code:
using System;
using System.Diagnostics;
using System.IO;
using System.Threading;
public static void Main()

*
*
*
			{
			var sw = System.Diagnostics.Stopwatch.StartNew();
			int erg=fibonacci1(30);
			sw.Stop();
			Console.WriteLine("Time used (float): {0} ms",sw.Elapsed.TotalMilliseconds);
			Console.WriteLine(erg);
			var sw2 = System.Diagnostics.Stopwatch.StartNew();
			int erg2=fibonacci2(30);
			sw2.Stop();
			Console.WriteLine(erg2);
			Console.WriteLine("Time used (float): {0} ms",sw2.Elapsed.TotalMilliseconds);
			}

Nun bekomme ich aber immer folgende Meldung:

The type or namespace name `Stopwatch' does not exist in the namespace `System.Diagnostics'. Are you missing an assembly reference?(CS0234)]

Type `object' does not contain a definition for `Stop' and no extension method `Stop' of type `object' could be found (are you missing a using directive or an assembly reference?)(CS1061)]

Type `object' does not contain a definition for `Elapsed' and no extension method `Elapsed' of type `object' could be found (are you missing a using directive or an assembly reference?)(CS1061)]

//
hat das was mit linux zu tun?
ich muss das ganze immer mit mono compilen (uni-vorgabe)
 
Zuletzt bearbeitet:
Hi,

soweit mich meine 5-Minuten-Google-Recherche nicht belügt ist unter Mono die Verwendung der Klasse nicht möglich bzw die Klasse "Stopwatch" (wie deine Fehlermeldung schon sagt) nicht vorhanden, zumindest in den älteren Versionen.

Angeblich (laut einem Post hier)ist es ab Mono 1.4 integriert.

VG,
Mad
 
Vermutlich ist die Klasse in Mono nicht implementiert?

Du könntest es auch einfach mit DateTime machen.

Code:
{
  var time1 = DateTime.Now;
  int erg=fibonacci1(30);
  Console.WriteLine("Time used (float): {0} ms", (DateTime.Now - time1).TotalMilliseconds);
  Console.WriteLine(erg);
  var time2 = DateTime.Now;
  int erg2=fibonacci2(30);
  Console.WriteLine("Time used (float): {0} ms", (DateTime.Now - time2).TotalMilliseconds);
  Console.WriteLine(erg2);
}
 
ich habe nur irgendwo gelesen das datetime wohl nicht so präzise wäre wie stopwatch,...
aber konnte mir schon denken das es an mono lag/liegt, hatte in der syntax nämlich keinen fehler festellen können
danke @ grünel...code klappt super...
muss nur mal schauen wie ich es in Sekunden ausgeben kann...
 
Hi,

in Sekunden? jetzt hast du Millisekunden. Also

Code:
{
  var time1 = DateTime.Now;
  int erg=fibonacci1(30);
  Console.WriteLine("Time used (float): {0} ms", (DateTime.Now - time1).TotalMilliseconds / 1000);
  Console.WriteLine(erg);
  var time2 = DateTime.Now;
  int erg2=fibonacci2(30);
  Console.WriteLine("Time used (float): {0} ms", (DateTime.Now - time2).TotalMilliseconds / 1000);
  Console.WriteLine(erg2);
}

VG,
Mad

Evtl gibt es ja auch "TotalSeconds" oder sowas :)
 
ja TotalSeconds klappt glaub ich :D, danke
 
Kann durchaus sein, dass Stopwatch genauer ist, aber es sieht so aus als ob du keine Wahl hättest :-)
 
Zurück
Oben