类名:TimeStone

功能:输出一段代码的运行耗时

用法:

static void Main(string[] args)
{
new TimeStone("Main", "start");
Thread.Sleep(1000);
new TimeStone("Main", "Sleep1");
Thread.Sleep(2000);
new TimeStone("Main", "Sleep2");
Thread.Sleep(3000);
new TimeStone("Main", "Sleep3");

Console.Read();

/*
Output:

TimeStone: Main$Sleep1 Took 1031 Ms
TimeStone: Main$Sleep2 Took 2000 Ms
TimeStone: Main$Sleep3 Took 3000 Ms
*/
}

输出:  TimeStone: Main$Sleep1 Took 1031 Ms
            TimeStone: Main$Sleep2 Took 2000 Ms
            TimeStone: Main$Sleep3 Took 3000 Ms

类代码:

代码

public class TimeStone
{
private static readonly TimeStoneList TimeStoneList = new TimeStoneList();
private readonly string _stoneName;
private readonly string _category;

public TimeStone(string stoneName)
: this(string.Empty, stoneName)
{
}

public TimeStone(string category, string stoneName)
{
#if DEBUG
_category = category;
_stoneName = stoneName;

DateTime now = DateTime.Now;

TimeStonePair preTimeStonePair = TimeStoneList.FindLast(p => p.First._category == this._category);
TimeSpan timeSpan = preTimeStonePair != null ? now - preTimeStonePair.Second : TimeSpan.Zero;
TimeStoneList.Add(new TimeStonePair(this, now));

Debug.WriteLine(string.Format("TimeStone: {0}${1} Took {2} Ms", _category, _stoneName, Math.Round(timeSpan.TotalMilliseconds)));
#endif
}
}

class TimeStoneList : List<TimeStonePair>
{
}

class TimeStonePair : Pair<TimeStone, DateTime>
{
public TimeStonePair(TimeStone timeStone, DateTime dateTime)
: base(timeStone, dateTime)
{
}
}

public class Pair<TKey, TValue>
{
private TKey _first = default(TKey);

private TValue _second = default(TValue);

public Pair()
{
}

public Pair(TKey first, TValue second)
{
_first = first;
_second = second;
}

public TKey First
{
get { return _first; }
set { _first = value; }
}

public TValue Second
{
get { return _second; }
set { _second = value; }
}

public override bool Equals(object obj)
{
if (obj == null)
return false;
if (obj.GetType() != this.GetType())
return false;
Pair<TKey, TValue> other = obj as Pair<TKey, TValue>;

return _first.Equals(other._first) && _second.Equals(other._second);
}
}

转载于:https://www.cnblogs.com/JiangJihua/archive/2010/10/25/1860219.html

性能调优工具类TimeStone相关推荐

  1. jvm性能调优工具之 jmap使用详解

    本文来说下jvm性能调优工具之 jmap使用详解 文章目录 概述 jmap用法 示例一:no option 示例二:heap 示例三:histo[:live] 示例四:clstats 示例五:fina ...

  2. JVM性能调优监控工具专题一:JVM自带性能调优工具(jps,jstack,jmap,jhat,jstat,hprof)...

    2019独角兽企业重金招聘Python工程师标准>>> 前提概要:         JDK本身提供了很多方便的JVM性能调优监控工具,除了集成式的VisualVM和jConsole外 ...

  3. JVM性能调优(4)——性能调优工具

    目录 一.JDK工具1.JDK工具2.利用 jps 找出进程3.利用 jstat 查看VM统计信息4.利用 jmap 查看对象分布情况5.利用 jstack 分析线程栈 二.Linux 命令行工具1. ...

  4. java 性能 火焰图_性能调优工具-火焰图

    性能调优工具-火焰图 发布时间:2019-07-17 19:29, 浏览次数:402 前言 工具的进化一直是人类生产力进步的标志,合理使用工具能大大提高我们的工作效率,遇到问题时,合理使用工具更能加快 ...

  5. Java应用性能调优工具介绍及实践

    一.背景 (1).随着微服务架构的逐渐推广,一个大型的单个应用程序被拆分为数个微服务系统,这为研发人员的本地调试跟踪带来困难 (2).在微服务架构中,由于业务的复杂性,常常一个业务流程涉及好数个微服务 ...

  6. mysql配置优化ya_mysql性能调优工具之mytop

    Mysql性能调优工具之mytop的安装和使用 1.mytop的下载地址 2.首先安装mytop必要的组件. yum -y install perl-DBD-MySQL perl-DBIperl-Te ...

  7. 【JVM 学习笔记 05】:JVM性能调优工具的使用和优化案例

    [JVM 学习笔记 05]:JVM性能调优工具的使用 1. 使用 jstat(命令行工具) 查看线上系统的JVM运行状况 1.1 常用命令 1.2 使用技巧 1.2.1 随着系统运行,每秒钟会在年轻代 ...

  8. 系统级性能调优工具Perf成功移植到龙芯处理器

    http://www.loongson.cn/news/company/304.html 程序优化主要包括算法优化.代码优化和系统级优化,Perf是Linux内核自带的系统级性能调优工具,2.6.31 ...

  9. HTML5应用性能调优工具WAPA – 安装篇

    转载: http://software.intel.com/node/506559 HTML5应用性能调优工具WAPA – 安装篇 Submitted by Dawei Cheng 程大伟... on ...

最新文章

  1. strtotime 获取当月最后一天的日期
  2. ASP.NET Razor – 标记简介
  3. Windows下的Memcache安装
  4. Jquery之Bind方法参数传递与接收的三种方法
  5. 步步深入:MySQL架构总览-gt;查询执行流程-gt;SQL解析顺序
  6. MIFARE系列5《存储结构》
  7. 【Azure + Core】实现CI/CD(一)构建镜像并推送仓库
  8. android 涨潮动画加载_潮汐apk客户端-潮汐android最新版APP下载v2.0.1.1 免费版-腾牛安卓网...
  9. 游戏-安卓渠道包提审至上线流程
  10. blog post list.html,Zblog模板修改和Zblog各模板代表的含义
  11. 社交网络电影深度解析论文,社交网络 电影解析
  12. PS小知识(五)——羽化(图片拼接后去缝、自然过渡渐变)
  13. RabbitMQ实现即时通讯-MQTT协议
  14. J2EE开发实战基础系列一 HelloWorld
  15. 我眼中的人工智能(2017年初)
  16. GIS技术在林业管理应用中有哪些功能?
  17. csp试题2:ISBN号码
  18. 大工计算机基础在线作业答案,大工11春《计算机化基础》在线作业及答案.doc
  19. element ui 排课_vue怎么去写一个学校排课系统
  20. ios系统可以使用python吗_怎么使用 Python 开发 iOS 程序

热门文章

  1. Android主线程耗时动画卡顿,Android性能优化实战之界面卡顿
  2. mysql join on 索引_连接查询,表关联查询join on,索引,触发器,视图
  3. TLS实现代码段加密
  4. Windows核心编程 第九章 线程与内核对象的同步(下)
  5. 【Android 安全】DEX 加密 ( Application 替换 | Android 应用启动原理 | ActivityThread 源码分析 )
  6. 【计算理论】Pumping 引理 ( 四个等价概念 | 自动机界限 | Pumping 引理简介 | Pumping 引理证明正则表达式 | Pumping 引理示例分析 )
  7. 【数据挖掘】贝叶斯信念网络 ( 马尔科夫假设 | 结构 | 有向无环图 | 参数 | 条件概率表 | 案例分析 )
  8. 【luogu P1558 色板游戏】 题解
  9. git锁和钩子以及图形化界面
  10. 点击文字label同时选中checkbox radio