C#基于计时器的泛型效率判断

本文分享了作者通过计时器进行的C#编程实验,对比了object类型、泛型及普通类型的效率。实验结果显示,object由于拆箱和装箱操作效率较低,而泛型与普通类型效率相近,凸显了泛型的高效性。同时,文章还介绍了使用计时器进行性能测试的方法。
摘要由CSDN通过智能技术生成

最近看到一个比较object,泛型,普通类型效率的课程,自己也有一些收获,现在把自己的想法写出来和大家分享一下。

在main方法中直接调用这个静态方法就行。

不要忘记使用 System.Diagnostics 命名空间

 public class Compare
    {
        /// <summary>
        /// 性能比较测试
        /// </summary>
        public static void Show()
        {
            Console.WriteLine("**************Compare************");
            {
                int iValue = 12345;
                long commomSecond = 0;//普通方法初始
                long objectSecond = 0;//object 初始
                long genericSecond = 0;//泛型初始
                long commonSecondt = 0;
                long objectSecondt = 0;
                long genericSecondt = 0;
                /*泛型时间测量*/
                {
                    Stopwatch watch = new Stopwatch();//new一个钟表
                    watch.Start();//开始计时
                    for (int i = 0; i < 100000000; i++) //循环1亿次调用
                    {
                        Show<int>(iValue);//泛型调用
                    }
                    watch.Stop(); //停止计时
                    genericSecond = watch.ElapsedMilliseconds;//Millisecond 以毫秒记
                    genericSecondt = watch.ElapsedTicks;//一种时间刻度,和硬件以及操作系统有关
                }
                /* 普通时间测量*/
                {
                    Stopwatch watch = new Stopwatch();
                    watch.Start();
                    for (int i = 0; i < 100000000; i++)
                    {
                        ShowInt(iValue);


                    }
                    watch.Stop();
                    commomSecond = watch.ElapsedMilliseconds;
                    commonSecondt = watch.ElapsedTicks;
                }
                /*object时间测量*/
                {
                    Stopwatch watch = new Stopwatch();
                    watch.Start();
                    for (int i = 0; i < 100000000; i++)
                    {
                        ShowObject(iValue);
                    }
                    watch.Stop();
                    objectSecond = watch.ElapsedMilliseconds;
                    objectSecondt = watch.ElapsedMilliseconds;
                }
                Console.WriteLine("commonSecond={0}\t objetSecond={1}\t genericSecond={2}\t",
                     commomSecond, objectSecond, genericSecond);
                Console.WriteLine("commonSecondt={0}\t objetSecondt={1}\t genericSecondt={2}\t",
                    commonSecondt, objectSecondt, genericSecondt);


            }
        }
        private static void ShowInt(int iParameter)
        {
            //do nothing
        }
        private static void ShowObject(object oParameter)
        {
            //do nothing
        }
        private static void Show<T>(T tParameter)
        {
            //do nothing
        }


    }
        
运行结果如下


结合所学知识,证明了object效率较低下,原因可能是与拆箱与装箱有关。

而泛型与普通方法相差不大,验证了泛型的效率较高。

通过此次试验,也可以学会一种简便计时器的使用。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值