我是靠谱客的博主 细心发夹,最近开发中收集的这篇文章主要介绍java调试程序中每一步所用时间工具类,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一般程序运行都参考每一步所用时间,用来反映程序的性能,TimeWatchUtil工具类就是实现此功能的工具。

  1. package com.dyb.util;
  2. import java.util.ArrayList;
  3. import java.util.List;
  4. /**
  5. *
  6. *<p>
  7. *description:主要用来调试程序,观察程序运行每一步所用的时间
  8. *</p>
  9. * @author
  10. * @since 2015-10-19
  11. * @see
  12. */
  13. public class TimeWatchUtil {
  14. /**
  15. * 创建开始时间
  16. */
  17. private long start;
  18. /**
  19. * 节点数据(一般保存结束时间数据)
  20. */
  21. private List<Object> sections;
  22. /**
  23. * 节点名称
  24. */
  25. private List<Object> sectionNames;
  26. /**
  27. * 观察名称,下面包括很多的sectionNames,watchName属于sectionNames的整体,便于观察定位
  28. */
  29. private String watchName;
  30. public static TimeWatchUtil createTimeWatch(String watchName){
  31. TimeWatchUtil timeWatch = new TimeWatchUtil();
  32. timeWatch.watchName = watchName;
  33. return timeWatch;
  34. }
  35. protected TimeWatchUtil(){
  36. sections = new ArrayList<>(); //初始化sections
  37. sectionNames = new ArrayList<>(); //初始化sectionNames
  38. start = System.currentTimeMillis(); //当前系统开始时间
  39. }
  40. public void addStep(String stepName){
  41. sectionNames.add(stepName); //每一步节点的名称
  42. sections.add(Long.valueOf(System.currentTimeMillis())); //节点开始时间
  43. }
  44. public String outputTimeList(){
  45. watchName = watchName.trim();
  46. StringBuffer outStr = new StringBuffer();
  47. //整体观察名称
  48. outStr.append( "[TIMEWATCH] ");
  49. outStr.append(watchName);
  50. outStr.append( ":");
  51. outStr.append( " [DETAILS] ");
  52. //输出每一个节点的名称和花费时间
  53. long last = start;
  54. for( int i= 0;i < sections.size();i++){
  55. long temp = ((Long)sections.get(i)).longValue();
  56. outStr.append( "" + (String)sectionNames.get(i) + ":" );
  57. outStr.append(( double)(temp - last));
  58. outStr.append( " ");
  59. last = temp;
  60. }
  61. //总体花费时间
  62. long totalWaste = 0;
  63. if(sections != null && sections.size() > 0){
  64. totalWaste = ((Long)sections.get(sections.size()- 1)).longValue() - start;
  65. }
  66. //将总体花费时间插入到名称watchName的后面。"[TIMEWATCH] "和":"长度是13
  67. outStr.insert(watchName.length() + 13, totalWaste);
  68. return outStr.toString();
  69. }
  70. }

使用方法:junit单元测试
  1. package com.dyb.util;
  2. import org.junit.Test;
  3. public class TestWatch {
  4. @Test
  5. public void test() throws InterruptedException{
  6. TimeWatchUtil tw = TimeWatchUtil.createTimeWatch( "TestWatch");
  7. Thread.sleep( 1000);
  8. tw.addStep( "1");
  9. Thread.sleep( 2000);
  10. tw.addStep( "2");
  11. Thread.sleep( 3000);
  12. tw.addStep( "3");
  13. System.out.println(tw.outputTimeList());
  14. }
  15. }

输出结果:[TIMEWATCH] TestWathc:6000 [DETAILS] 1:1000.0 2:2000.0 3:3000.0 

最后

以上就是细心发夹为你收集整理的java调试程序中每一步所用时间工具类的全部内容,希望文章能够帮你解决java调试程序中每一步所用时间工具类所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(55)

评论列表共有 0 条评论

立即
投稿
返回
顶部