• 计算方法或模块的执行时间


    /// <summary>
    /// 计算执行时间的类
    /// </summary>
    public class QueryPerformance
    {
        [DllImport("Kernel32.dll")]
        private static extern bool QueryPerformanceCounter(out long performanceCount);
    
        [DllImport("Kernel32.dll")]
        private static extern bool QueryPerformanceFrequency(out long frequency);
    
        private long begintTime = 0;//开始时间  
    
        private long endTime = 0;//结束时间  
    
        private long frequency = 0;//处理器频率  
        /// <summary>
        /// 开始时间
        /// </summary>
        public long BegintTime
        {
            get { return begintTime; }
        }
        /// <summary>
        /// 结束时间
        /// </summary>
        public long EndTime
        {
            get { return endTime; }
        }
        /// <summary>
        /// CPU频率
        /// </summary>
        public long Frequency
        {
            get { return frequency; }
        }
        /// <summary>
        /// 构造函数,获取CPU频率
        /// </summary>
        public QueryPerformance()
        {
            QueryPerformanceFrequency(out frequency);//获取频率  
        }
        /// <summary>
        /// 开始计算
        /// </summary>
        public void Start()
        {
            QueryPerformanceCounter(out begintTime);
        }
        /// <summary>
        /// 停止计时
        /// </summary>
        /// <param name="showRecord">是否输出计时</param>
        /// <returns>计时</returns>
        public double Stop(bool showRecord)
        {
            QueryPerformanceCounter(out endTime);
    
            if (showRecord)
            {
                return TastTime;
            }
            return 0.0D;
        }
        /// <summary>
        /// 花费的时间
        /// </summary>
        public double TastTime//花费时间:单位S  
        {
            get
            {
                if (frequency > 0)
                    return (double)(endTime - begintTime) / frequency;
                else
                    return 0;
            }
        }
    }

    接下来是使用方法:

    QueryPerformance queryPerformance = new QueryPerformance();
    queryPerformance.Start();  
    
    //需要知道执行时间的模块
    
    double time = queryPerformance.Stop(true);
  • 相关阅读:
    可变形参 Day07
    流程控制 Day06
    基本数据类型的值传递 和引用数据类型的引用传递 Day06
    一维数组的求平均成绩 Day06
    一维数组的初始化及遍历 Day06
    字符串分割+二维数组 Day15练习
    Java对数组和列表的排序1.8新特性
    Java Stream
    JPA学习(六、JPA_JPQL)
    JPA学习(五、JPA_二级缓存)
  • 原文地址:https://www.cnblogs.com/rogation/p/3289198.html
Copyright © 2020-2023  润新知