zoukankan      html  css  js  c++  java
  • Net 如何计算一段代码的效率

    在.Net 4.0以后的版本,提供了一个类,该类在 System.Diagnostics命名空间下,使用该类就可以计算出执行结果相同的两端代码的效率,在代码优化上是很实用的。

    泛型效率是高是低呢??我们来测试下,代码如下:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace ConsoleApp1
    {
        class Program
        {
            static void Main(string[] args)
            {
                {
                    Console.WriteLine("
    ");
                    System.Diagnostics.Stopwatch watch = new System.Diagnostics.Stopwatch();
                    watch.Start();
                    for (int i = 0; i < 10000000; i++)
                    {
                        ShowObj(123);
                    }
                   
                    Console.WriteLine("object方法执行毫秒数"+watch.ElapsedMilliseconds);
                    watch.Stop();
                }
                {
                    System.Diagnostics.Stopwatch watch = new System.Diagnostics.Stopwatch();
                    watch.Start();
                    for (int i = 0; i < 10000000; i++)
                    {
                        ShowGeneric(123);
                    }
                    Console.WriteLine("泛型方法执行毫秒数"+watch.ElapsedMilliseconds);
                    watch.Stop();
                }
                Console.Read();
            }
            public static void ShowObj(object obj) {
                string str = "123";
            }
            public static void ShowGeneric<T>(T t)
            {
                string str = "123";
            }
        }
         
    }
    

      

    经过上述执行,我们可以把我们程序框架里面的帮助类都改成泛型的。

    这里简要说下泛型的特点,C#泛型的几个特点:

    (1)如果实例化泛型类型的参数相同,那么JIT编译器会重复使用该类型。
    (2)C#的泛型类型可以应用于强大的反射技术。
    (3)C#的性能高,我们知道ArrayList添加元素时都是object类型,如果添加一个值类型,就需要把它转换为引用类型,当取出这个元素的时候又要将其转换为值类型,这就需要装箱和拆箱的操作,性能降低。而泛型无需类型的转换操作。
    (4)C#除可单独声明泛型类型(包括类与结构)外,也可在基类中包含泛型类型的声明。但基类如果是泛型类,它的类型参数要么已实例化,要么来源子类(同样是泛型类型)声明的类型参数。
    关于泛型特点的详细解说:请看本人《自定义泛型那点事
  • 相关阅读:
    AndroidManifest.xml文件详解(activity)(二)
    Android Studio显示可视化编辑界面
    Delphi XE2 新增 System.Zip 单元,压缩和解压缩文件
    LockBox的安装
    Kernel的意义
    Mathematical optimization数学上的最优化
    矩阵分析
    【2008nmj】支持向量机
    【2008nmj】BP二元分类
    【2008nmj】Logistic回归二元分类感知器算法.docx
  • 原文地址:https://www.cnblogs.com/wangbaicheng1477865665/p/Generic.html
Copyright © 2011-2022 走看看