C# 中任何可以告诉我时钟周期、函数消耗的秒数的类

发布于 2024-10-06 16:14:40 字数 65 浏览 2 评论 0原文

C# 中是否有一个类可以为我提供时钟滴答声、方法消耗的秒数?我想我有两个围绕该功能的功能来计时所占用的滴答声和秒数。

Is there a class in C# that can give me clock ticks, seconds consumed by a method? I guess I have two wrap that functionality around function to time the ticks and seconds taken up.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

美人迟暮 2024-10-13 16:14:41

您可以查看 [System.TimeSpan] 类并将其包装在您的方法中。

You can check out the [System.TimeSpan] class and wrap that around your method.

眼泪都笑了 2024-10-13 16:14:40

您可以使用 System.Diagnostics.Stopwatch 类。

Stopwatch sw = new Stopwatch();
sw.Start();

// Your method call here...

sw.Stop();

// Get the elapsed time
TimeSpan elapsed = sw.Elapsed;

从这里,您可以使用 TimeSpan.TicksTimeSpan.TotalSeconds< /code>属性分别确定经过的刻度或经过的秒数。

如果您愿意,您可以使用以下方法来“包装”函数周围的功能,正如您所提到的(只是一个想法,您可能想要调整此代码以适合您的特定目的 - 传入参数等):

public static T ExecuteWithElapsedTime<T>(Func<T> function, out TimeSpan elapsedTime)
{
   T rval;

   Stopwatch sw = new Stopwatch();
   sw.Start();
   rval = function();
   sw.Stop();
   elapsedTime = sw.Elapsed;

   return rval;
}

你可以这样调用它(其中 myFunc 是一个返回 int 的函数):

TimeSpan elapsed;
int result = ExecuteWithElapsedTime(myFunc, out elapsed);

可能更简单,但甚至不用费心使用方法像这样,只需将秒表代码与您的方法调用内联即可。

You could use the System.Diagnostics.Stopwatch class.

Stopwatch sw = new Stopwatch();
sw.Start();

// Your method call here...

sw.Stop();

// Get the elapsed time
TimeSpan elapsed = sw.Elapsed;

From here, you can use the TimeSpan.Ticks or the TimeSpan.TotalSeconds properties to determine the elapsed ticks or elapsed seconds, respectively.

If you wanted to, you could use a method along the following lines to "wrap" that functionality around a function, as you mentioned (just an idea, you'd probably want to tweak this code to suit your specific purposes -- passing in arguments, etc.):

public static T ExecuteWithElapsedTime<T>(Func<T> function, out TimeSpan elapsedTime)
{
   T rval;

   Stopwatch sw = new Stopwatch();
   sw.Start();
   rval = function();
   sw.Stop();
   elapsedTime = sw.Elapsed;

   return rval;
}

And you could call it like this (where myFunc is a function that returns an int):

TimeSpan elapsed;
int result = ExecuteWithElapsedTime(myFunc, out elapsed);

Might be simpler though to not even bother with a method like this, and just put the Stopwatch code inline with your method call.

掩饰不了的爱 2024-10-13 16:14:40

使用:

using System.Diagnostics;

...

var sw = Stopwatch.StartNew();
DoYaThing();
Console.WriteLine("{0} Elapsed", sw.Elapsed);

Use:

using System.Diagnostics;

...

var sw = Stopwatch.StartNew();
DoYaThing();
Console.WriteLine("{0} Elapsed", sw.Elapsed);
栀子花开つ 2024-10-13 16:14:40

高分辨率计时器 .. 另外,

iirc TimeSpan 可以为您提供以刻度为单位的测量值。

There's the high resolution timer ...

Also, iirc a TimeSpan can give you a measurement in ticks back.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文