C#代码运行计时类
1 public class OperationTimer : IDisposable
2 {
3 private Int64 m_startTime;
4 private string m_text;
5 private Int32 m_CollectionCount;
6
7 public OperationTimer(string text)
8 {
9 m_startTime = Stopwatch.GetTimestamp();
10 m_text = text;
11 }
12
13 public void Dispose()
14 {
15 string text = string.Format("Time={0,6:###.00}", (Stopwatch.GetTimestamp() - m_startTime) / Stopwatch.Frequency);
16 Console.WriteLine(string.Format("{0}:{1}", m_text, text));
17 }
18 }
试了一下果然很好用。程序很简单,就是在一个类继承自IDisposable接口的类的构造函数中记录下开始时间,在销毁时计算一下时间差,就可得到相应的执行时间。使用也很巧妙,直接 using (OperationTimer op=new OperationTimer ("Generic ")){...} ,很爽很简洁的实现了想要的功能。
不过有个小情况,就是本人平时时 asp.net 下写的代码,如果每次都拿到控制台中运行,不太方便,如果能改造一下,让这个类既能在控制台下运行也可以在asp.net 的环境下方便使用就好了。
看了一下这个类的实现原理,由于是在类被销毁时才计算运行时间差,没有更多的空间可以去获取这个时间。似乎只有搞一个委托,让程序要以在销毁时执行,把这个时间传递需要的地方。呵呵,写了这么久的程序,也看了很多次的委托,因为实际中基本没有用上过,所以对写法不太熟,正好重温一下。下面是改造过程。
第一步:将这个类按自己习贯的方式修改一下命名,并为了能简单调用,增加了一个构造函数,代码如下:
代码
/// <summary>
/// 计算执行时间的类
/// 修改:增加了委托方法
/// 时间:2009-12-8
/// </summary>
class CodeTimer : IDisposable
{
private Int64&n
/// 计算执行时间的类
/// 修改:增加了委托方法
/// 时间:2009-12-8
/// </summary>
class CodeTimer : IDisposable
{
private Int64&n
补充:软件开发 , C# ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,
部份技术文章来自网络,