c#数据结构之运行时间测试

需要注意的:每次程序运行的时间返回值是不一样的。和机子的性能有关系。代码大部分也有注释了。核心代码就是GetRunningTime()这个函数里面的代码。

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;

namespace _001运行时间测试
{
    class Program
    {
        /// <summary>
        /// 说明:每次程序运行的时间返回值是不一样的。
        /// </summary>
        /// <param name="args"></param>
        static void Main(string[] args)
        {
            //Test函数作为参数传递给GetRunningTime 得到Test函数运行的时间
            TimeSpan endTime = GetRunningTime(Test);
            //TotalSeconds 表示的总秒数。
            Console.WriteLine("使用时间:"+endTime.TotalSeconds);
            Console.ReadKey();
        }

        static void Test()
        {
            int[] arr = new int[100000];
            BuildArray(arr);//给arr赋值 
            DisplayNums(arr);//显示  浪费时间
        }
        /// <summary>
        /// 获取action 这个函数要运行的时间
        /// </summary>
        /// <param name="time">需要运行的函数 action( 要求无参数 无返回值)</param>
        /// <returns>时间间隔</returns>
        static TimeSpan GetRunningTime(Action action )
        {
            GC.Collect();  //开始进行垃圾回收 如果不回收运行时间测试的时候,系统自动回收会导致测量时间不准确
            GC.WaitForPendingFinalizers();//挂起当前线程,等待垃圾回收结束。
            ////它指示关联进程在该进程的应用程序部分内(而不是在操作系统内核中)运行代码所用的时间。
            TimeSpan startTime = Process.GetCurrentProcess().UserProcessorTime;
            //匿名调用函数
            action(); //ps:你也可以直接复制这个函数 然后把要运行的代码放到这里执行就好了
            //获取程序运行代码的时间 减去startTime的时间 得到 action函数运行用到时间
            TimeSpan endTime = Process.GetCurrentProcess().UserProcessorTime.Subtract(startTime);
            return endTime;
        }

        /// <summary>
        /// 构建数据 最大99999
        /// </summary>
        /// <param name="arr"></param>
        static void BuildArray(int[] arr)
        {
            for (int i = 0; i < 99999; i++)
            {
                arr[i] = i;
            }
        }
        /// <summary>
        /// 显示arr数据
        /// </summary>
        /// <param name="arr"></param>
        static void DisplayNums(int[] arr)
        {
            for (int i = 0; i < arr.GetUpperBound(0); i++)//GetUpperBound(0) 获取一位数据坐标最大值,GetUpperBound(1) 获取二位数据坐标最大值
            {
                Console.Write(arr[i]+" ");
            }
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值