`

我的StopWatch

阅读更多

 

项目中一个功能很耗时,头儿让我看看是什么原因造成的,看能不能有什么调优。 

 

分析原因时得用数据支持吧, 也就是说看都有哪些因素造成了耗时,各贡献值具体是多少。顺着这个思路想起来和apache中common框架中的一个工具类org.apache.commons.lang.time StopWatch。 

 

它很好的模拟了秒表,通过它的split方法和getSplitTime方法,可以很好地看出各分步骤对性能下降的贡献值来。 

 

演示代码如下:

 

org.apache.commons.lang.time.StopWatch stWatch = new org.apache.commons.lang.time.StopWatch();

 

stWatch.start();

 

step1();

 

stWatch.split();

 

System.out.println("Time consumed by step1: "+stWatch.getSplitTime());

 

step2();

 

stWatch.split();

 

System.out.println("Time consumed by step1 and step2: "+stWatch.getSplitTime());

 

stWatch.stop();

 

 

显示结果: 

Time consumed by step1: 31

Time consumed by step1 and step2: 2031

 

还行,这毕竟比手动地写System.currentTimeMillis() – startTime来实现面向对象些。 

 

但有些不足,从结果可以看出,每次getSplitTime得到的值都是当前所有步骤的总和,而不是当前这个步骤的耗时值,以上面代码为例,它没有直接地得出step1和step2两个步骤的各自耗。有些遗憾啊。 

 

改!

 

于是原来基础上加了两个方法(加了方法的源码见附件): splitAndSaveTime和getSplitTimeByStep。这样的演示代码如下:

 

   

    MyStopWatch stWatch = new MyStopWatch();

 

    stWatch.start();

 

    step1();

 

    stWatch.splitAndSaveTime();

 

    System.out.println("Time consumed by step1: "+stWatch.getSplitTimeByStep());

 

    step2();

 

    stWatch.splitAndSaveTime();

 

    System.out.println("Time consumed by   step2: "+stWatch.getSplitTimeByStep());

 

   stWatch.stop();

 

 

输出结果顺眼多了:

Time consumed by step1: 63

Time consumed by step2: 2000

 

 

记在这里备查,分享,交流。

 

分享到:
评论
3 楼 mercyblitz 2010-03-22  
AOP就完事了
2 楼 rmn190 2009-12-23  
多谢提醒。 刚看完Perj4J, 再一次地感到了编程的魅力。

这个框架跟AOP的结合,跟自己想改造Log4J的想法不谋而合了。 自己动手又慢了。

谢谢!

1 楼 kiki 2009-12-23  
建议看下prof4j

相关推荐

    Visual C++源代码 26 如何使用Stopwatch实现高精度计时

    Visual C++源代码 26 如何使用Stopwatch实现高精度计时Visual C++源代码 26 如何使用Stopwatch实现高精度计时Visual C++源代码 26 如何使用Stopwatch实现高精度计时Visual C++源代码 26 如何使用Stopwatch实现高精度...

    基于swift开发的Stopwatch应用程序

    基于swift开发的Stopwatch应用程序基于swift开发的Stopwatch应用程序基于swift开发的Stopwatch应用程序基于swift开发的Stopwatch应用程序基于swift开发的Stopwatch应用程序基于swift开发的Stopwatch应用程序基于...

    Stopwatch

    "Stopwatch"是一个在计算机编程领域中常见的工具,特别是在性能测试和时间测量方面。Stopwatch类通常被用于C#、Java、Python等编程语言中,它允许开发者精确地度量代码段执行的时间,这对于优化算法和提升程序效率至...

    Java计时新姿势StopWatch详解

    Java计时新姿势StopWatch详解 StopWatch是Java中的一种计时工具,主要用于对某个操作或方法的执行时间进行计时。通过使用StopWatch,可以很方便地对程序的执行时间进行跟踪和分析。 StopWatch的使用非常简单,只...

    匿名委托及Stopwatch

    在.NET框架中,匿名委托和`Stopwatch`类是两种非常重要的编程概念,它们在实际开发中有着广泛的应用。现在让我们深入探讨这两个主题,并通过具体的示例来理解它们的使用。 首先,我们来讨论匿名委托。匿名委托允许...

    matlab开发-Stopwatch

    在MATLAB中,Stopwatch是一种实用工具,用于度量代码段执行所需的时间,这对于性能分析和优化至关重要。MATLAB的Stopwatch功能可以帮助开发者追踪程序运行的精确时间,从而更好地理解和改进算法效率。在这个"matlab...

    StopWatch (jar)多个文件

    StopWatch 是一个在Java编程语言中广泛使用的工具类,它属于Apache Commons Lang库的一部分。这个类主要用于衡量代码段或任务的执行时间,帮助开发者进行性能分析和优化。它的工作原理是通过记录开始和结束时间来...

    使用Stopwatch实现高精度计时

    在.NET框架中,`System.Diagnostics.Stopwatch`类提供了一种高效、精确的方式来测量代码执行的时间。这个类特别适合用于性能测试和基准测试,因为它能够准确地跟踪时间间隔,不受系统时钟中断的影响。下面我们将详细...

    Stopwatch(备用资料)

    Stopwatch 是一个常见的计时工具,在编程中,尤其是在性能测试和调试过程中,它被广泛用于测量代码执行的时间。本文将围绕“Stopwatch”这一主题,深入探讨其在编程中的应用,以及如何通过代码实现一个简单的秒表...

    《C#计时利器:Stopwatch的使用》源代码

    在.NET框架中,`System.Diagnostics.Stopwatch`类是开发者用于衡量代码执行时间的重要工具,尤其在性能测试和优化中起到关键作用。`Stopwatch`类提供了精确到纳秒级的时间测量,使得它成为C#中计时的首选方法。本文...

    android STopwatch

    在Android平台上,开发一个Stopwatch应用是一项常见的任务,它能够帮助用户计时,通常用于运动、学习或游戏等场合。本应用名为"android Stopwatch",由开发者亲自编写,旨在提供可靠的秒表功能,并且特别强调了对...

    CSharp 4.0 .Net Framework V4.0 Stopwatch 类

    C# 中的 `Stopwatch` 类是 .NET Framework 4.0 版本中的一个工具,用于精确地测量代码执行的时间。它属于 `System.Diagnostics` 命名空间,并且包含在 `System.dll` 程序集中。`Stopwatch` 类提供了多种方法和属性,...

    Stopwatch精准秒表

    在.NET框架中,`System.Diagnostics.Stopwatch`类是用于测量时间间隔的一个强大工具,它提供了比`System.Timers.Timer`或`System.Threading.Timer`更高的精度。`Stopwatch`类特别适用于需要精确计时的场合,比如性能...

    基于IDEA调试模式与StopWatch工具类如何优雅实现Java代码执行时间检测统计博文的代码工程

    作为程序员在我们的日常编码过程中经常需要统计一段代码或者一个方法的执行时间,尤其是当以一...这是基于IDEA调试模式与StopWatch工具类如何优雅实现Java代码执行时间检测统计的代码工程资源文件,欢迎大家下载学习。

    digital_stopwatch.zip

    在本项目中,"digital_stopwatch.zip"是一个包含FPGA(Field Programmable Gate Array)设计的数字跑表的压缩文件。这个设计不仅实现了基础的计时功能,如复位、暂停和秒表,而且经过了实际测试,确保了功能完善且...

    stopwatch.rar

    "stopwatch.rar"这个压缩包文件很可能包含一个秒表应用或相关程序,便于用户在电脑上使用秒表功能。由于标签为"aa",这可能意味着文件的分类或特性不是很具体,但我们可以深入探讨秒表在不同场景下的应用及其相关...

    Android:StopWatch

    Android:StopWatchAndroid:StopWatchAndroid:StopWatchAndroid:StopWatchAndroid:StopWatchAndroid:StopWatchAndroid:StopWatchAndroid:StopWatch秒表应用

    Hybrid Stopwatch Timer v3.1.4 for Android 一款设计独特、方便并可精确计时的 Android 应用.rar

    《Hybrid Stopwatch Timer v3.1.4:Android平台上的高效计时利器》 Hybrid Stopwatch Timer v3.1.4是一款专为Android用户设计的独特、便捷且精度极高的计时应用。它融合了传统秒表与定时器的功能,使得在多种场景下...

    clock_alarm_stopwatch (vhdl)

    General Digital Clock Clock setting with Switch – Use Key_up and Key_down key to change the number – Use Key_right and Key_left key to change the position – Use set key to start Clock ...

    Stopwatch_秒表_

    Stopwatch stopwatch = new Stopwatch(); stopwatch.Start(); while (stopwatch.IsRunning) { Console.WriteLine("已过去的时间: {0}", stopwatch.Elapsed); Thread.Sleep(1000); // 暂停1秒以更新显示 } ...

Global site tag (gtag.js) - Google Analytics