Java Stopwatch类,性能与时间计时器案例详解
作者:ajwqb06628 发布时间:2023-07-24 04:08:50
标签:Stopwatch类,性能,时间计时器
在研究性能的时候,完全可以使用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还真是靠谱。效率,优雅度都相当好,不愧是高手做的控件。以后如果对什么技术又疑问,完全可以用该类来测试,记得,记得,记得得。
来源:https://blog.csdn.net/ajwqb06628/article/details/102070972
![](https://www.aspxhome.com/images/zang.png)
![](https://www.aspxhome.com/images/jiucuo.png)
猜你喜欢
- ★打印九九乘法表public class TestDemo { public static
- 随着目前微信越来越火,所以研究微信的人也就越来越多,这不前一段时间,我们公司就让我做一个微信公众号中问卷调查发红包功能,经过一段时间的研究,
- 本文由Markdown语法编辑器编辑完成。1. 需求分析;已知当在调用某一webservice的服务时,如果调用成功,会接受到该服务的返回X
- 概述LruCache的核心原理就是对LinkedHashMap的有效利用,它的内部存在一个LinkedHashMap成员变量,值得注意的4个
- 一、项目结构二、pom.xml<?xml version="1.0" encoding="UTF-8&q
- 从功能上说,可以分为两部分,分布式功能和数据功能。分布式功能主要是节点集群及集群附属功能如restful借口、集群性能检测功能等,数据功能主
- 本文实例讲述了Java构造代码块,静态代码块原理与用法。分享给大家供大家参考,具体如下:本文内容:局部代码块构造代码块静态代码块补充&nbs
- Lambda 表达式Lambda 表达式是现代 C++ 中最重要的特性之一,而 Lambda 表达式,实际上就是提供了一个类似匿名函数的特性
- 调用SAP WebService服务需要转换操作1、通过浏览器访问SAP WebService地址,进行验证并生成wsdl文件地址并不是可以
- 题外话: 泛型与通配符是Java语法中比较难懂的两个语法,学习泛型和通配符的主要目的是能够看懂源码,实际使用的不多。1.泛型1.1泛型的用法
- 本文实例为大家分享了java GUI学生图书管理的具体代码,供大家参考,具体内容如下- mysql数据库建表:1.book表 2.bs借书记
- 功能:解决web站点的登录,权限验证,授权等功能优点:在不影响站点业务代码,可以权限的授权与验证横切到业务中1、要添加的依赖<!--t
- 我想到使用Redis的订阅发布模式是用来解决推送问题的~。对于概念性的叙述,多多少少还是要提一下的:什么是Redis发布订阅?Redis发布
- 在Java中可以使用HttpServer类来实现Http服务器,该类位于com.sun.net包下(rt.jar)。实现代码如下:主程序类p
- 时间处理相关类:1.java.util.Date:时间类2.java.text.DateFormat:时间格式化类(抽象类),实现类:jav
- 很多童鞋反应在吧项目导入到eclipse(myeclipse)时中文会有乱码,修改了编码格式后还是乱码,这里给大家介绍一下关于中文乱码时修改
- 一、问题定义:问下有一个数组,这些数组中的值都有自己的权重,怎样设计才能高效的优先取出权重高的数??例如:权重: 8 2&nbs
- 封面图下个季度的目标是把前端监控相关的内容梳理出来,梳理出来之后可能会在公司内部做个分享~Flutter应用程序既括代码也包括一些其他的资产
- 一、安装activeMQLinux环境ActiveMQ部署方法:https://www.aspxhome.com/article/16232
- 1.1、获取http请求参数是一种刚需我想有的小伙伴肯定有过获取http请求的需要,比如想前置获取参数,统计请求数据做服务的接口签名校验敏感