优秀的手机游戏下载!
首页 stopwatch是什么意思什么意思

stopwatch是什么意思什么意思

发布时间:2024-07-24 11:04:41 编辑:手游哥 浏览:224

stopwatch,英文单词,动词、名词。

作动词使用时译为用秒表测定时间,作名词使用时译为码表;跑表。

双语例句:

1.Stopwatchesusedtotimeswimmersduringacompetition,usuallyelectronic.

停表用于为在竞赛期间的游泳运动员计时,通常是电子的。

2.Pleaseprepareastopwatchtorecordeveryrunner`stime.

请准备好跑表记录每个跑步者的时间。

秒表的使用方法!

stopwatch,秒表。n.码表;跑表vt.用秒表测定时间,复数 stopwatches。

双语例句

1、As a judge of the game, you should buy a stopwatch in advance.

作为这场比赛的裁判,你应该提前买个秒表。

2、All of these stopwatches have been tested before the game.

这些秒表在比赛前都已经测试过了。

3、I think his trainer was the one who holds a stopwatch in hand.

我想他的教练就是那个手里拿着秒表的人。

C#中Stopwatch和DateTime中的ticks的异同

若使用的是vivo手机,打开手机“闹钟时钟”软件–秒表–点击“”即可开始计时,点击“‖”停止计时会暂停,再点击“”会继续累计计时;计时过程中可点击计次,依次记录当前计次时间;计时停止后可点击复位重置。

c#程序stopwatch怎么使用

近期在看C#中的stopwatch的使用方法,然后结合DateTime发现了一个有趣的事情,主要是关于ticks的差异。我们首先来看一个简单的代码:

static void StopTimeTest()

{

Stopwatch sw = new Stopwatch()

//开始计时

sw.Start()

//100ms

Thread.Sleep(100)

//计时结束

sw.Stop()

Console.WriteLine(”elpase time {0}, elapse ticks {1}”, sw.ElapsedMilliseconds, sw.ElapsedTicks)

}

static void Main(string[] args)

{

StopTimeTest()

}

这段代码很简单,就是通过StopWatch来检测一个执行过程消耗的时间,这个在研究performance的log中有重要的作用。

这段函数的输出如下:

可以简单的看出elapse time输出的就是100ms,这个没有什么问题。但是后面的这个ticks是什么东西,他是如何算出来的。我们去MSDN上看看,他是如何解释这个这个ticks的:

This property represents the number of elapsed ticks in the

underlying timer mechanism. A tick is the smallest unit of time that the

Stopwatch timer can measure. Use the Frequency field to convert the ElapsedTicks value into a number of seconds.

From &lthttps://msdn.microsoft.com/en-us/library/system.diagnostics.stopwatch.elapsedticks(v=vs.110).aspx &gt

这段话很简单,我就不翻译了,但是很显然,这个elapseTicks的值是和frequency相关的,他可以通过frequency来计算出具体的时间。好吧,我们在原来的打印语句下面加上下面这个打印,看看frequency是什么情况:

//注意Frequency是Stopwatch,不是具体的sw

Console.WriteLine(”Stopwatch freq:{0}, elapse time:{1}ns”, Stopwatch.Frequency, sw.ElapsedTicks*(1000L * 1000L * 1000L) / Stopwatch.Frequency)

输出如下:

针对frequency,MSDN有如下的解释:

Because the Stopwatch

frequency depends on the installed hardware and operating system,

the Frequency value remains constant while the system is running.

From &lthttps://msdn.microsoft.com/en-us/library/system.diagnostics.stopwatch.frequency(v=vs.110).aspx &gt

可以看出,虽然frequency在不同的设备上其值是不同的,但是在同一个设备上他的值得固定的。而时间其实就是通过elapsedTicks/Frequency可以得到。

到了这里我们先把stopwatch放一放,然后来看一下DateTime,同样看一段很简单的代码:

static void DateTimeTest()

{

//打印时的时间格式

string DATE_FORMAT = ”yyyy-MM-dd HH:mm:ss.ffff”

//开始的utc time

DateTime startTime = DateTime.UtcNow

Thread.Sleep(200)

//结束的utc time

DateTime endTime = DateTime.UtcNow

Console.WriteLine(”start time:{0}, end time:{1}”, startTime.ToString(DATE_FORMAT, CultureInfo.InvariantCulture), endTime.ToString(DATE_FORMAT, CultureInfo.InvariantCulture))

}

这段函数其实也很简单,就是打印一个起始的时间和一个结束的时间,输出的结果如下:

stopwatch是什么意思什么意思

很清晰,结果也是200ms左右。在一些log系统中有人想要起始的时间点,又想知道中间的监听的elpase

time,所以就想把DateTime和StopWatch结合起来运用。正好看到DateTime中有一个AddTicks的方法,于是就有了下面这段

代码的出现:

static void StopAndDateTimeTest()

{

Stopwatch sw = new Stopwatch()

string DATE_FORMAT = ”yyyy-MM-dd HH:mm:ss.ffff”

//起始时间

DateTime startTime = DateTime.UtcNow

//开始计时

sw.Start()

//300ms

Thread.Sleep(300)

//计时结束

sw.Stop()

//得到结束的时间

DateTime endTime = startTime.AddTicks(sw.ElapsedTicks)

Console.WriteLine(”elpase time {0}”, sw.ElapsedMilliseconds)

Console.WriteLine(”start time:{0}, end time:{1}”, startTime.ToString(DATE_FORMAT, CultureInfo.InvariantCulture), endTime.ToString(DATE_FORMAT, CultureInfo.InvariantCulture))

}

这段代码的目的也很清晰,就是向DateTime的AddTicks方法传入StopTime的ElapsedTicks来计算endTime。看起来还是蛮完美的,我们来看一下执行的结果:

End Time的值并不是我们期望的start time加上300ms,也就是说这样计算end time是错误的,这究竟是为什么呢?我们从MSDN上找到了答案:

Stopwatch ticks are different from DateTime.Ticks . Each tick in the DateTime.Ticks

value represents one 100-nanosecond interval. Each tick in

theElapsedTicks value represents the time interval equal to 1 second

divided by the Frequency .

From &lthttps://msdn.microsoft.com/en-us/library/system.diagnostics.stopwatch.elapsedticks(v=vs.110).aspx &gt

简单来说,就是Stopwatch的tick和DateTime的ticks是不同的概念,DateTime中的tick的值是100ns为一

个tick,而stopwatch中的elapsedTicks所表示的tick的值则是1/Frequency,两者是不同的。那么是不是说我们就没有

办法通过ticks来把两者联系起来了呢,不然,请看下面代码:

static void StopAndDateTimeTest()

{

Stopwatch sw = new Stopwatch()

string DATE_FORMAT = ”yyyy-MM-dd HH:mm:ss.ffff”

//起始时间

DateTime startTime = DateTime.UtcNow

//开始计时

sw.Start()

//300ms

Thread.Sleep(300)

//计时结束

sw.Stop()

//得到结束的时间

//DateTime endTime = startTime.AddTicks(sw.ElapsedTicks)

//这里把ElapsedTicks改成Elapsed.Ticks,注意中间多了一个点

DateTime endTime = startTime.AddTicks(sw.Elapsed.Ticks)

Console.WriteLine(”elpase time {0}”, sw.ElapsedMilliseconds)

Console.WriteLine(”start time:{0}, end time:{1}”, startTime.ToString(DATE_FORMAT, CultureInfo.InvariantCulture), endTime.ToString(DATE_FORMAT, CultureInfo.InvariantCulture))

}

执行的结果如下:

可以看到这就是我们想要的结果,所以Stoptime的elapsed的Ticks也是以100ns为单位的。若是想要和DateTime配合,需要使用这个ticks。

上面回答的是Stopwatch类的使用方法。

而实际上的问题是,在VS2017里,using System.Diagnostics里并没有Stopwatch类。至少我的VS2017里没有(新建的.Net 4.7.2 空项目),因为没有所以无法通过自动补全补齐“using System.Diagnostics”

而解决方案也非常简单:

右键项目 选择&lt管理 NuGet 包(N)&gt

在浏览分页里搜索Stopwatch,找到由微软(Microsoft)提供的System.Runtime.Extensions ,选择安装

然后直接就可以直接使用了。

同理,其他缺少的类也可以通过以上方法补全。

以上就是关于stopwatch是什么意思什么意思全部的内容,如果了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

更多相关资讯

stopwatch,英文单词,动词、名词。 作动词使用时译为用秒表测定时间,作名词使用时译为码表;跑表。 双语例句: 1.Stopwatchesusedtoti…
查看详情
stopwatch,英文单词,动词、名词。 作动词使用时译为用秒表测定时间,作名词使用时译为码表;跑表。 双语例句: 1.Stopwatchesusedtoti…
查看详情
stopwatch,英文单词,动词、名词。 作动词使用时译为用秒表测定时间,作名词使用时译为码表;跑表。 双语例句: 1.Stopwatchesusedtoti…
查看详情
相关资讯
猜你喜欢