在研究性能的时候,完全可以使用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. Android的init过程详解(一)(转)

    本文使用的软件版本 Android:4.2.2 Linux内核:3.1.10 本文及后续几篇文章将对Android的初始化(init)过程进行详细地.剥丝抽茧式地分析,并且在其中穿插了大量的知识,希望 ...

  2. Shell函数返回值、删除函数、在终端调用函数

    Shell 也支持函数.Shell 函数必须先定义后使用. Shell 函数的定义格式如下: function_name () { list of commands [ return value ] ...

  3. 【转】repo 的一些用法和理解-不错

    原文网址:http://blog.csdn.net/yasin_lee/article/details/5975068 repo的用法(zz) 注:repo只是google用Python脚本写的调用g ...

  4. 开发人员应该知道的SEO

    搜索引擎是如何工作的 > 如果你有时间,可以读一下谷歌的框架: http://infolab.stanford.edu/~backrub/google.html > 这是一个老的,有些过时 ...

  5. Centos中安装code blocks

    CentOS下面安装Codeblocks不像Ubuntu下面那样轻松,可以直接在软件中心安装.这里好多信赖我们要自己安装,也不是很麻烦. 1.先安装gcc和gcc++,这个可以直接安装 # yum i ...

  6. hdu 3711 Binary Number(暴力 模拟)

    Problem Description For non-negative integers x and y, f(x, y) , )=,f(, )=, f(, )=. Now given sets o ...

  7. 苹果拒绝App内部使用版本检测功能

    10.6 - Apple and our customers place a high value on simple, refined, creative, well thought through ...

  8. 分享一个3D球面标签云

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  9. 利用PHPExcel转Excel柱形图

    这在附还有一个转柱形图的效果及代码. 原PHP报表效果: 转成Excel后的效果: 附上代码: <? php /** * PHPExcel * * Copyright (C) 2006 - 20 ...

  10. SQL语句中的DQL、DML、DCL、DDL、CCL、TPL

    结构化查询语言(Structured Query Language)简称SQL,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询.更新和管理关系数据库系统:同时也是数据库 ...