zoukankan      html  css  js  c++  java
  • 计算方法或模块的执行时间

    /// <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);
  • 相关阅读:
    通过修改配置文件修改MySQL的时区设置
    五子棋输赢判定算法
    windows下通过压缩包安装MySQL
    systemctl命令详解
    普通用户从其他主机连接MySQL数据库
    ubuntu普通用户使用wireshark的权限问题
    账号管理文件/etc/passwd和/etc/shadow
    为什么处理有序数组比无序数组快?
    一些图像处理函数用法
    基于C++求两个数的最大公约数最小公倍数
  • 原文地址:https://www.cnblogs.com/rogation/p/3289198.html
Copyright © 2011-2022 走看看