Previous topicNext topic
Help > 开发指南 > 编程基础 > 扩展功能 > 日期扩展 >
计算程序执行用时

有些时候我们需要计算一段程序代码大概运行了多长时间,我们可以有以下几种写法:

常规的计算方法

此方法思路清晰,使用也很简单,但是代码写起来相对烦琐一点。

Vb.Net
'记录一个开始时间
Dim dtBegin As DateTime=DateTime.Now
'下面为需要计时的代码片断
Dim strMD5 As String=Crypt.MD5ForFile("E:\编程相关\Visual Studio C#\sanMuSoft.CS.Main\bin\Release\sanMuSoft.CS.Framework.dll")
'记录一下结束时间与开始时间的时间差,返回一个TimeSpan值
Dim usedTime As TimeSpan=DateTime.Now-dtBegin

'显示共用时信息
Proj.MsgDebug.Add("共用时{0}秒",usedTime.TotalSeconds)
'另外一种显示方式
Proj.MsgDebug.Add("共用时{0}分{1}秒{2}毫秒",usedTime.Minutes,usedTime.Seconds,usedTime.Milliseconds)

'返回结果:共用时0.0179532秒
'返回结果:共用时0分0秒17毫秒

C#
// 记录一个开始时间
DateTime dtBegin = DateTime.Now;
// 下面为需要计时的代码片断
string strMD5 = Crypt.MD5ForFile(@"E:\编程相关\Visual Studio C#\sanMuSoft.CS.Main\bin\Release\sanMuSoft.CS.Framework.dll");
// 记录一下结束时间与开始时间的时间差,返回一个TimeSpan值
TimeSpan usedTime = DateTime.Now - dtBegin;

// 显示共用时信息
Proj.MsgDebug.Add("共用时{0}秒", usedTime.TotalSeconds);
// 另外一种显示方式
Proj.MsgDebug.Add("共用时{0}分{1}秒{2}毫秒", usedTime.Minutes, usedTime.Seconds, usedTime.Milliseconds);

//返回结果:共用时0.0179532秒
//返回结果:共用时0分0秒17毫秒

 

简单的计算方法

此方法清晰、简单,代码相对简洁。我们平台只是将Stopwatch对象初始化好供大家直接使用而已。缺点当然就是不能在多线程中使用。

Vb.Net
Proj.Timer.Restart() '重启计时器
'下面为需要计时的代码片断
Dim strMD5 As String=Crypt.MD5ForFile("E:\编程相关\Visual Studio C#\sanMuSoft.CS.Main\bin\Release\sanMuSoft.CS.Framework.dll")

Proj.Timer.Stop() '停止计时
'显示共用时信息
Proj.MsgDebug.Add("共用时{0}秒",Proj.Timer.ElapsedMilliseconds/1000)
'另外一种显示方式
Dim usedTime As TimeSpan=Proj.Timer.Elapsed
Proj.MsgDebug.Add("共用时{0}分{1}秒{2}毫秒",usedTime.Minutes,usedTime.Seconds,usedTime.Milliseconds)

C#
Proj.Timer.Restart(); // 重启计时器
// 下面为需要计时的代码片断
string strMD5 = Crypt.MD5ForFile(@"E:\编程相关\Visual Studio C#\sanMuSoft.CS.Main\bin\Release\sanMuSoft.CS.Framework.dll");

Proj.Timer.Stop(); // 停止计时
// 显示共用时信息
Proj.MsgDebug.Add("共用时{0}秒", Proj.Timer.ElapsedMilliseconds / (double)1000);
// 另外一种显示方式
TimeSpan usedTime = Proj.Timer.Elapsed;
Proj.MsgDebug.Add("共用时{0}分{1}秒{2}毫秒", usedTime.Minutes, usedTime.Seconds, usedTime.Milliseconds);

通用的写法

此方法是上面一种方法的通用、正常的写法。只是有部分人可能会经常忘记Stopwatch这个对象名,如果能记得住的话,下面的使用方法可能是更明智的选择。

Vb.Net
Dim timer As New Stopwatch
timer.Start() '重启计时器
'下面为需要计时的代码片断
Dim strMD5 As String=Crypt.MD5ForFile("E:\编程相关\Visual Studio C#\sanMuSoft.CS.Main\bin\Release\sanMuSoft.CS.Framework.dll")

timer.Stop() '停止计时
'显示共用时信息
Proj.MsgDebug.Add("共用时{0}秒",timer.ElapsedMilliseconds/1000)
'另外一种显示方式
Dim usedTime As TimeSpan=timer.Elapsed
Proj.MsgDebug.Add("共用时{0}分{1}秒{2}毫秒",usedTime.Minutes,usedTime.Seconds,usedTime.Milliseconds)

C#
Stopwatch timer = new Stopwatch();
timer.Start(); // 重启计时器
// 下面为需要计时的代码片断
string strMD5 = Crypt.MD5ForFile(@"E:\编程相关\Visual Studio C#\sanMuSoft.CS.Main\bin\Release\sanMuSoft.CS.Framework.dll");

timer.Stop(); // 停止计时
// 显示共用时信息
Proj.MsgDebug.Add("共用时{0}秒", timer.ElapsedMilliseconds / (double)1000);
// 另外一种显示方式
TimeSpan usedTime = timer.Elapsed;
Proj.MsgDebug.Add("共用时{0}分{1}秒{2}毫秒", usedTime.Minutes, usedTime.Seconds, usedTime.Milliseconds);

如何记录多次时间

我们可以通过适时的停止与继续来记录多次使用时间。

Vb.Net
Dim timer As New Stopwatch
timer.Start() '启动计时器
'下面为需要计时的代码片断
Dim strMD5 As String=Crypt.MD5ForFile("E:\编程相关\Visual Studio C#\sanMuSoft.CS.Main\bin\Release\sanMuSoft.CS.Framework.dll")

timer.Stop() '停止计时
'显示共用时信息
Proj.MsgDebug.Add("共用时{0}秒",timer.Elapsed.TotalSeconds)

timer.Start() '继续开启计时器
strMD5=Crypt.MD5ForFile("E:\编程相关\Visual Studio C#\sanMuSoft.CS.Main\bin\Release\sanMuSoft.CS.Framework.dll")
timer.Stop() '停止计时
'显示共用时信息
Proj.MsgDebug.Add("共用时{0}秒",timer.Elapsed.TotalSeconds)

timer.Restart() '重启计时器,从0开始计时
strMD5=Crypt.MD5ForFile("E:\编程相关\Visual Studio C#\sanMuSoft.CS.Main\bin\Release\sanMuSoft.CS.Framework.dll")
timer.Stop() '停止计时
'显示共用时信息
Proj.MsgDebug.Add("共用时{0}秒",timer.Elapsed.TotalSeconds)

'返回结果:共用时0.0179394秒
'返回结果:共用时0.037801秒
'返回结果:共用时0.0176583秒

C#
Stopwatch timer = new Stopwatch();
timer.Start(); // 启动计时器
// 下面为需要计时的代码片断
string strMD5 = Crypt.MD5ForFile(@"E:\编程相关\Visual Studio C#\sanMuSoft.CS.Main\bin\Release\sanMuSoft.CS.Framework.dll");

timer.Stop(); // 停止计时
// 显示共用时信息
Proj.MsgDebug.Add("共用时{0}秒", timer.Elapsed.TotalSeconds);

timer.Start(); // 继续开启计时器
strMD5 = Crypt.MD5ForFile(@"E:\编程相关\Visual Studio C#\sanMuSoft.CS.Main\bin\Release\sanMuSoft.CS.Framework.dll");
timer.Stop(); // 停止计时
// 显示共用时信息
Proj.MsgDebug.Add("共用时{0}秒", timer.Elapsed.TotalSeconds);

timer.Restart(); // 重启计时器,从0开始计时
strMD5 = Crypt.MD5ForFile(@"E:\编程相关\Visual Studio C#\sanMuSoft.CS.Main\bin\Release\sanMuSoft.CS.Framework.dll");
timer.Stop(); // 停止计时
// 显示共用时信息
Proj.MsgDebug.Add("共用时{0}秒", timer.Elapsed.TotalSeconds);

// 返回结果:共用时0.0179394秒
// 返回结果:共用时0.037801秒
// 返回结果:共用时0.0176583秒