`
hududanyzd
  • 浏览: 815690 次
文章分类
社区版块
存档分类
最新评论

Stopwatch计时器、秒表 C#

 
阅读更多
.NET2.0也提供了这样一个秒表:Stopwatch类,它可以比较精确地测量时间。
速度测试:
软件的性能和可测性是一个复杂的主题。要确保应用程序能够满足用户的期望,就需要在开发周期内考虑它的性能和可测性。这在设计阶段至关重要,一个糟糕的设计几乎肯定会导致糟糕的用户体验。然而,仅仅有好的设计也不能保证程序能够高效地运行,最终代码的质量同样重要。
量度一个运行时间较长的例程相当简单。如果一个过程会持续几分钟,只要一块腕表就可以记录它的时间了。比如一个执行时间为两分钟的过程,10%的改善能够节省12秒,这是很容易去确定的。
而如果要测量一个非常短暂的过程,就要考虑更好的精确性了。比如有一些很小的例程,它们的运行时间可能只有千分之一秒,但会被调用100万次,这样的累积效果就明显了。在.NET framework的先前版本中,需要使用Windows API函数,而在.NET framework 2.0中,微软引入了Stopwatch(它就是我们的秒表)类来简化时间的量度任务。
Stopwatch类:
使用Stopwatch类来量度时间非常简单。跟现实生活中的秒表一样,这个类的对象也能够对计数器进行开始、停止、归零(重置)操作,不过它可比一般的秒表精确多了,它能够精确到微秒(也就是百万分之一秒)。
示例代码:
要演示Stopwatch的使用还是来段代码吧。下面是一个控制台应用程序,它将1到100万之间的所有整数累加:


usingSystem;

namespaceStopWatchClass
{
classProgram
{
staticvoidMain(string[] args)
{

longtotal=0;

for(inti=1; i<=10000000; i++)
{
total
+=i;
}
}
}
}


添加Stopwatch对象:
Stopwatch类位于System.Diagnostics命名空间。下面是添加对象后的代码:

usingSystem;
using System.Diagnostics;

namespaceStopWatchClass
{
classProgram
{
staticvoidMain(string[] args)
{
Stopwatch timer
= new Stopwatch();
longtotal=0;

for(inti=1; i<=10000000; i++)
{
total
+=i;
}
}
}
}


控制Stopwatch对象:
Stopwatch提供了几个方法用以控制Stopwatch对象。Start方法开始一个计时操作,Stop方法停止计时。此时如果第二次使用 Start方法,将继续计时,最终的计时结果为两次计时的累加。为避免这种情况,在第二次计时前用Reset方法将对象归零。这三个方法都不需要参数。代码是:

usingSystem;
usingSystem.Diagnostics;

namespaceStopWatchClass
{
classProgram
{
staticvoidMain(string[] args)
{
Stopwatch timer
=newStopwatch();
longtotal=0;

timer.Start();
for(inti=1; i<=10000000; i++)
{
total
+=i;
}

timer.Stop();

}
}
}


读取Stopwatch结果:
在结束计时后下一步就是读取计时结果了。Stopwatch类提供了以下属性:

  • Elapsed:返回一个TimeSpan对象,表示计时时间间隔;
  • ElapsedMilliseconds:返回计时经过的微秒数,精确度稍差,适合于稍长一点的计时;
  • ElapsedTicks: 返回计时经过的计时器刻度(timer tick)数。计时器刻度是Stopwatch对象可能的最小量度单位。计时器刻度时间的长度由特定的计算机和操作系统确定。Stopwatch对象的 Frequency静态字段的值表示一秒所包含的计时器刻度数。注意它与TimeSpan的Ticks属性所用的时间单位的区别。
应当根据计时任务的情况选择其中的一个属性。在我们的示例程序中,Elapsed属性提供了需要的精确度,用它来输出经过的微秒数。这也是TimeSpan的最高精确度了。
下面是最终的程序代码:


usingSystem;
usingSystem.Diagnostics;

namespaceStopWatchClass
{
classProgram
{
staticvoidMain(string[] args)
{
Stopwatch timer
=newStopwatch();
longtotal=0;

timer.Start();
for(inti=1; i<=10000000; i++)
{
total
+=i;
}

timer.Stop();

decimal micro = timer.Elapsed.Ticks / 10m;
Console.WriteLine(
"Execution time was {0:F1} microseconds.", micro);
}
}
}


另外,使用IsRunning属性可以查看一个Stopwatch实例是否正在计时,使用StartNew方法可以开始一个新的计时器。
分享到:
评论

相关推荐

    C#开发秒表计时器 ,该设计纯属自我编写 如果代码有什么不好的地方,请高手多多指教,谢谢。。。新手上路

    在本文中,我们将深入探讨如何使用C#语言开发一个秒表计时器。C#是一种广泛应用于Windows桌面应用、游戏开发、Web服务等领域的面向对象的编程语言。它以其强大的功能和简洁的语法深受程序员喜爱。 秒表计时器是一个...

    C#程序 秒表计时器

    本项目"秒表计时器"是一个基于C#实现的实用工具,它能够精确地记录时间间隔,这对于运动员训练、游戏计时或任何需要精确时间测量的场景都非常有用。 在C#中实现秒表计时器,主要涉及到以下几个关键知识点: 1. **...

    Stopwatch精准秒表

    总结起来,`Stopwatch`是C#中进行精确时间度量的重要工具,尤其在性能分析和优化的场景下,它提供了比基于时钟的计时器更优的解决方案。通过合理利用`Stopwatch`类的各种属性和方法,我们可以有效地衡量和改善代码的...

    c# (vs)线程编写动态秒表计时器

    本项目“c#(vs)线程编写动态秒表计时器”利用C#和VS来创建一个实时计时器,特别适用于公司组织的路跑活动等需要精确计时的场合。秒表计时器的核心功能是获取并显示系统时间,通过计算两个时间点的差值来实现计时。...

    C#秒表计时器,可分别记录多个时间,包含源程序。

    在C#编程环境中,开发一个秒表计时器是一项常见的任务,尤其对于初学者来说,它可以帮助理解事件处理、线程同步以及用户界面更新等基础知识。C#秒表计时器是一个可以记录多个独立时间间隔的实用工具,适用于各种场景...

    winfrom自定义控件计时器与秒表

    本主题将深入探讨如何使用C#语言在WinForm环境中创建一个自定义的计时器控件和秒表控件。 首先,我们需要了解基础的控件创建过程。在C#中,我们可以继承自`System.Windows.Forms.Control`类来创建新的控件。计时器...

    计时器秒表

    总之,“计时器秒表”项目展示了如何利用C#的Stopwatch类创建一个功能完备的秒表应用,这对于学习时间和事件处理的C#程序员来说是一个很好的实践案例。通过这个项目,开发者可以更好地理解C#的事件驱动编程模型以及...

    秒表计时,精确到毫秒

    在C#编程中,开发一个能够精确到毫秒的秒表计时器是一个常见的需求,尤其是在性能测试或者游戏开发等场景。本篇文章将详细介绍如何利用C#语言实现这样的功能,并结合给定的“秒表计时”项目进行讨论。 首先,我们...

    秒表和计算器 C# 代码

    DateTime类可以获取当前时间,而Stopwatch类则提供了一个高性能的计时器,适合精确计算短时间间隔。以下是一个简单的秒表实现: ```csharp using System; using System.Diagnostics; class StopWatchExample { ...

    用C#编写的【秒表】

    随着技能的提升,你可以尝试将这个秒表应用扩展到更复杂的定时器或计时器功能,比如添加分段计时、多任务计时等。 总之,使用C#编写秒表是一个很好的学习实践,它涵盖了面向对象编程的基础概念,如类、对象、事件和...

    c#秒表 有源代码

    C#提供了`System.Diagnostics.Stopwatch`类,它提供了一个高性能的计时器,适合这种应用场景。你可以通过`Start()`、`Stop()`和`Elapsed`属性来控制和读取计时器。 3. **UI更新**:当秒表运行时,需要实时更新UI...

    2个倒计时和一个秒表计时器demo

    其次,秒表计时器(Stopwatch Timer)则是用来记录一段时间的流逝,常用于运动比赛或个人计时任务。其主要步骤包括: 1. 开始计时:记录当前时间作为起点。 2. 暂停和恢复:如果支持此功能,可以暂停计时器并保存...

    Stopwatch_秒表_

    在软件中,这通常通过系统提供的高精度计时器API来实现,例如C#中的`System.Diagnostics.Stopwatch`类。这个类提供了计时和获取经过时间的方法,非常适用于创建秒表应用。 要实现正计时功能,你需要初始化一个`...

    C#编写的秒表

    而`Stopwatch`类则提供了微秒级别的精度,适用于性能测试和计时器应用,如秒表。 在C#中,秒表程序的核心是`Stopwatch`类的使用。创建一个`Stopwatch`实例,然后调用`Start()`方法开始计时,`Stop()`方法停止计时,...

    C# 简单秒表 不要资源分

    这个命名空间提供了与系统诊断和性能计数器相关的类,如进程管理、计时器和性能监视器等。 3. **Stopwatch类**:`Stopwatch`类提供了一种精确度很高的计时方式,可以用来测量代码的执行时间。它通过操作系统硬件...

    C#秒表实例

    在C#中实现秒表功能,我们需要利用`System.Diagnostics.Stopwatch`类,这是一个内置的高性能计时器。`Stopwatch`类提供了开始、停止、重置以及获取经过时间的方法,非常适合构建秒表应用。 首先,我们需要导入`...

    C#开发的高精度秒表程序

    4. **高性能计时器**: C#的`Stopwatch`类是为高性能计时设计的,它使用硬件定时器,可以提供纳秒级的精度。秒表程序可能就是基于`Stopwatch`类构建的,因为它能提供比`Timer`组件更精确的计时。 5. **异步编程**: ...

    .net编写秒表计时器,同时能截取单次时间,绝对好用

    在.NET框架中,开发一个秒表计时器可以利用C#语言的强大功能,结合Windows Forms或WPF等UI库来创建用户友好的界面。本文将深入探讨如何利用.NET技术实现这个功能,以及如何进行时间的精确截取,以便在各种比赛场景中...

    c#实训秒表设计

    5. 错误处理和异常捕获:确保代码在各种情况下都能正确运行,比如防止在计时器未启动时尝试暂停或重置。 以上就是构建一个简单C#秒表应用的主要步骤和关键知识点。对于初学者来说,这是一个很好的实践项目,可以...

    秒表计时器

    在这个场景中,我们看到的项目标题为"秒表计时器",暗示这是一个用C#语言编写的简单计时应用。C#是一种强大的面向对象的编程语言,广泛应用于Windows平台上的桌面应用、游戏开发以及移动应用等。 描述中提到"供你...

Global site tag (gtag.js) - Google Analytics