• 获取代码运行时间


    1.使用Stopwatch

     //实例化一个计时器
    Stopwatch watch = new Stopwatch();
    //开始计时
    watch.Start();
    
    //此处为要计算的运行代码
    for (int i = 1; i < 1000000; i++) { }   // Execute the task to be timed
    
    //结束计时
    watch.Stop();
    
    //获取当前实例测量得出的总运行时间(以毫秒为单位)
    string time = watch.ElapsedMilliseconds.ToString();
    //说明:Stopwatch提供了几个方法用以控制Stopwatch对象。Start方法开始一个计时操作,Stop方法停止计时。为避免这种情况,在第二次计时前用Reset方法将对象归零
     
    Console.WriteLine("Elapsed: {0}",watch.Elapsed);
    Console.WriteLine("In milliseconds: {0}",watch.ElapsedMilliseconds);
    Console.WriteLine("In timer ticks: {0}",watch.ElapsedTicks);

    2.使用DateTime

    DateTime startTime = DateTime.Now;
    Console.WriteLine ("Started: {0}", startTime);
     
    // Execute the task to be timed
    for (int i=1; i < 100000; i++){}  
    
    DateTime stopTime = DateTime.Now;
    Console.WriteLine ("Stopped: {0}", stopTime);
    
    TimeSpan elapsedTime = stopTime - startTime;
    Console.WriteLine ("Elapsed: {0}", elapsedTime);
    Console.WriteLine ("in hours       :" + elapsedTime.TotalHours);
    Console.WriteLine ("in minutes     :" + elapsedTime.TotalMinutes);
    Console.WriteLine ("in seconds     :" + elapsedTime.TotalSeconds);
    Console.WriteLine ("in milliseconds:" + elapsedTime.TotalMilliseconds);

    3.调用API

    [System.Runtime.InteropServices.DllImport("Kernel32.dll")]
    static extern bool QueryPerformanceCounter(ref long count);
    [System.Runtime.InteropServices.DllImport("Kernel32.dll")]
    static extern bool QueryPerformanceFrequency(ref long count);
    static void SubTest()
    {
        long count = 0;
        long count1 = 0;
        long freq = 0;
        double result = 0;
        QueryPerformanceFrequency(ref freq);
        QueryPerformanceCounter(ref count);
    
        for (int i = 0; i < int.MaxValue; i++)
        { }
    
        QueryPerformanceCounter(ref count1);
        count = count1 - count;
        result = (double)(count) / (double)freq;
        Console.WriteLine("QueryPerformanceCounter Time: {0} s", result);
        Console.ReadKey();
    }

    4.利用Thread的UserProcessorTime

    class Program
    {
        static void Main(string[] args)
        {
            Timing tobj = new Timing();
            tobj.startTime();
            for (int i = 0; i < int.MaxValue; i++)
            { }
            tobj.stopTime();
            Console.WriteLine("Time: " + tobj.Result().TotalSeconds);
            Console.ReadKey();
        }
    }
    
    class Timing
    {
        TimeSpan duration;
        public Timing()
        {
            duration = new TimeSpan(0);
        }
        public void stopTime()
        {
            duration = Process.GetCurrentProcess().TotalProcessorTime;
        }
    
        public void startTime()
        {
            GC.Collect();
            GC.WaitForPendingFinalizers();
        }
        public TimeSpan Result()
        {
            return duration;
        }
    }
  • 相关阅读:
    Beginning UICollectionView In iOS 6: Part 2/2
    Intermediate Debugging with Xcode 4.5
    Xcode4: Running Application Tests From The Command Line in iOS
    Mac 在open with列表中清除重复应用程序
    Beginning UICollectionView In iOS 6: Part 1/2
    Xcode Apple MachO Linker warning
    Running Xcode 4 unit tests from the command line
    25 iOS App Performance Tips & Tricks
    Introduction to InApp Purchases in iOS 6 Tutorial
    iPhone Development 101: Cocoa: Notifications
  • 原文地址:https://www.cnblogs.com/jizhiqiliao/p/9993046.html
Copyright © 2020-2023  润新知