Java Stopwatch类,性能与时间计时器案例详解

网友投稿 682 2022-12-10

Java Stopwatch类,性能与时间计时器案例详解

Java 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://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.ToStigCqlvring()); //输出 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 ListInt = new List();

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)

{http://

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还真是靠谱。效率,优雅度都相当好,不愧是高手做的控件。以后如果对什么技术又疑问,完全可以用该类来测试,记得,记得,记得得。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:基于SpringBoot启动类静态资源路径问题
下一篇:springboot @Value实现获取计算机中绝对路径文件的内容
相关文章

 发表评论

暂时没有评论,来抢沙发吧~