在研究性能的时候,完全可以使用Stopwatch计时器计算一项技术的效率。但是有时想知道某想技术的性能的时候,又常常想不起可以运用Stopwatch这个东西,太可悲了。

属性:

  Elapsed       获取当前实例测量得出的总运行时间。
  ElapsedMilliseconds  获取当前实例测量得出的总运行时间(以毫秒为单位)。
  ElapsedTicks      获取当前实例测量得出的总运行时间(用计时器计时周期表示)。
  IsRunning        获取一个指示 Stopwatch 计时器是否在运行的值。

方法

  GetTimestamp   获取计时器机制中的当前最小时间单位数。
  Reset        停止时间间隔测量,并将运行时间重置为零。
  Restart       停止时间间隔测量,将运行时间重置为零,然后开始测量运行时间。
  Start         开始或继续测量某个时间间隔的运行时间。
  StartNew       对新的 Stopwatch 实例进行初始化,将运行时间属性设置为零,然后开始测量运行时间。
  Stop         停止测量某个时间间隔的运行时间。

示例:

        static void Main(string[] args)
{
Stopwatch sw = new Stopwatch();
sw.Start(); //开始计时
WebClient wc = new WebClient();
string str = wc.DownloadString("http://www.jmeii.com/");
Console.WriteLine(sw.IsRunning); //输出 true 计时器是否在运行。
sw.Stop(); //计时结束
Console.WriteLine(sw.Elapsed); //输出 00:00:00.3452873
Console.WriteLine(sw.ElapsedMilliseconds); //输出 223
Console.WriteLine(sw.ElapsedTicks); //输出501838
Console.WriteLine(sw.IsRunning); //输出 flase Console.WriteLine(Stopwatch.GetTimestamp()); //输出56151531319 获取计时器机制中的当前最小时间单位数。 sw.Reset(); //重置
Console.WriteLine(sw.Elapsed.ToString()); //输出 00:00:00 //返回的是TimeSpan类型,可以任意处理 sw.Restart(); //重新开始
FileStream fs = new FileStream(@"D:\admin_b.txt", FileMode.Open, FileAccess.Read);
//string str =
byte[] byteArr = new byte[fs.Length];
fs.Read(byteArr, 0, (int)fs.Length);
Stopwatch sw2 = Stopwatch.StartNew(); //创建一个新的计时器
string str2 = Encoding.UTF8.GetString(byteArr);
sw.Stop();
Console.WriteLine(sw.ElapsedMilliseconds); //输出 10
Console.WriteLine(sw2.ElapsedMilliseconds); //输出 9
sw2.Stop(); Console.ReadKey();
}

  对比FileStream与File类:

        static void Main(string[] args)
{
Stopwatch sw = new Stopwatch();
sw.Start();
FileStream fs = new FileStream(@"D:\admin_b.txt", FileMode.Open, FileAccess.Read);
//string str =
byte[] byteArr = new byte[fs.Length];
fs.Read(byteArr, 0, (int)fs.Length);
string str = Encoding.UTF8.GetString(byteArr);
sw.Stop();
Console.WriteLine(sw.ElapsedMilliseconds); //输出 12 Stopwatch sw2 = new Stopwatch();
sw2.Start();
File.ReadAllText(@"E:\admin_b.txt");
sw2.Stop();
Console.WriteLine(sw2.ElapsedMilliseconds); //输出 11 Console.ReadKey();
}

  Linq示例:

public class Program
{
static void Main(string[] args)
{
//获取到一个随机数集合
List<int> ListInt = new List<int>();
Random r = new Random();
for (int i = 0; i < 1000000; i++) //生成一个1百万数字的集合
{
ListInt.Add(r.Next(1000));
} Stopwatch sw = new Stopwatch();
sw.Start();
int count = 0;
foreach (var i in ListInt)
{
count = count + i;
}
Console.WriteLine("遍历计算结果:" + count);
sw.Stop();
Console.WriteLine("遍历用时:" + sw.ElapsedMilliseconds); //输出 13 Stopwatch sw2 = new Stopwatch();
sw2.Start();
int count2 = 0;
count2 = ListInt.Sum();
Console.WriteLine("Linq的计算结果:" + count2);
Console.WriteLine("Linq的使用时间:" + sw2.ElapsedMilliseconds); //输出 12
sw2.Stop(); Console.ReadKey();
}
}

  运行了3,5次,Linq的性能的确厉害。有几次相等,有几次少1毫秒。看来Linq to OBJECT还真是靠谱。效率,优雅度都相当好,不愧是高手做的控件。以后如果对什么技术又疑问,完全可以用该类来测试,记得,记得,记得得。

C# Stopwatch类_性能_时间计时器的更多相关文章

  1. Junit 注解 类加载器 .动态代理 jdbc 连接池 DButils 事务 Arraylist Linklist hashset 异常 哈希表的数据结构,存储过程 Map Object String Stringbufere File类 文件过滤器_原理分析 flush方法和close方法 序列号冲突问题

    Junit 注解 3).其它注意事项: 1).@Test运行的方法,不能有形参: 2).@Test运行的方法,不能有返回值: 3).@Test运行的方法,不能是静态方法: 4).在一个类中,可以同时定 ...

  2. 利用StopWatch类监控Java代码执行时间并分析性能

    springframework中的StopWatch类可以测量一个时间间隔的运行时间,也可以测量多个时间间隔的总运行时间.一般用来测量代码执行所用的时间或者计算性能数据,在优化代码性能上可以使用Sto ...

  3. cb02a_c++_数据结构_顺序容器_STL_list类_双向链表

    /*cb02a_c++_数据结构_顺序容器_STL_list类_双向链表实例化std::list对象在list开头插入元素在list末尾插入元素在list中间插入元素,插入时间恒定,非常快.数组:中间 ...

  4. UML类图详解_关联关系_一对多

    对于一对多的示例,可以想象一个账户可以多次申购.在申购的时候没有固定上限,下限为0,那么就可以使用容器类(container class)来搞,最常见的就是vector了. 下面我们来看一个“一对多” ...

  5. UML类图详解_关联关系_多对一

    首先先来明确一个概念,即多重性.什么是多重性呢?多重性是指两个对象之间的链接数目,表示法是“下限...上限”,最小数据为零(0),最大数目为没有设限(*),如果仅标示一个数目级上下限相同. 实际在UM ...

  6. 10.5 android输入系统_Reader线程_使用EventHub读取事件和核心类及配置文件_实验_分析

    4. Reader线程_使用EventHub读取事件 使用inotify监测/dev/input下文件的创建和删除 使用epoll监测有无数据上报 细节: a.fd1 = inotify_init(& ...

  7. cb01a_c++_数据结构_顺序容器_STL_deque类

    /*cb01a_c++_数据结构_顺序容器_STL_deque类deque是一个动态数组,比vector更加灵活.两者都属于动态数组deque与vector非常类似deque可以在数组开头和末尾插入和 ...

  8. Python获取当前时间_获取格式化时间_格式化日期

    Python获取当前时间_获取格式化时间: Python获取当前时间: 使用 time.time( ) 获取到距离1970年1月1日的秒数(浮点数),然后传递给 localtime 获取当前时间 #使 ...

  9. 3D教育类小图标_三维立体学习类icon图标素材

    3D教育类小图标_三维立体学习类icon图标素材

随机推荐

  1. Golden Pyramid

    Golden Pyramid Our Robo-Trio need to train for future journeys and treasure hunts. Stephan has built ...

  2. dubbo初体验

    最近需要开发部门中某个大数据量的提取的功能,加到了一个ElasticSearch的群.在群里听说到一个框架叫dubbo,阿里系开源软件.听到群友谈的神乎其神的,什么什么功能切分多协议栈,高并发等等等. ...

  3. 异步化DAO的设计和实践

    目前,公司技术规划要求未来所有的服务要全面实现异步化接口,使得每个服务能达到1万/秒的单机性能.我们知道,在一个服务请求中,可能会调用其他服务,还会使用memcache.kv以及mysql等.目前,大 ...

  4. facl笔记

    文件系统访问列表:tom:    tom, tom基本组jerry: other:r-- chown FACL:Filesystem Access Control List利用文件扩展保存额外的访问控 ...

  5. SPRING+JNDI+C3P0 in tomcat6

    Tomcat 中Jndi是使用Tomcat自带的连接池,由于客户要求,抛弃Tomcat自带的连接池.使用c3p0 .经过几个小时调试,解决方案如下: 环境:Tomcat 6 下面来看Jndi 与 c3 ...

  6. IOS6和IOS7 显示一样的SearchBar

    if (isIOS7) { mySearchBar=[[UISearchBar alloc]initWithFrame:CGRectMake(, , , )]; mySearchBar.autocor ...

  7. c++之 printf 打印内容

    该代码全部在Visual Studio 2015中编写,有关VS2015的安装流程后期在写相关的博文 首先让我们来输出一下hello, world! 1.首先新建一个main.cpp的文件,然后在该文 ...

  8. yii使用寻呼功能

    CDbCriteria这是类包使用,包是yii自带专门用来处理类似分类这种功能的. 而我们使用yii框架然后调用这种方法会起到事半功倍的效果,会发现使用这个可以节省非常多的时间.让你高速的使用PHP中 ...

  9. 调起qq临时通话

    1.在qq推广的网站上的推广工具中将个人或者公司的qq确认为推广qq 2. 选择好显示的图片,将代码拷贝到页面上就可以了

  10. JS 逗号表达式

    JavaScript中逗号运算符 JavaScript中逗号运算符(,)是顺序执行两个表达式.使用方法: expression1, expression2 其中expression1是任何表达式.ex ...