• C# 代码优化


    1.Float并不比Double要快

    2.右移和预计算优化是有效的

    3.减少冗余计算

    4.string ax=string.Empty;  注:不要使用: string ax="";  I don't konw why.But it's Microsoft's convention.

    5.比较字符串时不要用.ToLower()/.ToUpper()
    replace by Equals()     
    Don't create a string never used later

    6.Catch{}要捕获详细异常,不要再乱抛
    catch the specific exception than "System.Exception" or rethrow the exception.
    Catching generic exception types can hide run-time problems from the library user,
    and can complicate debugging.

    c#代码中影响性能的主要因素
        资源的浪费   
            -内存的浪费
            -对象的冗余
            -cpu的浪费
        拆箱,装箱
            -值类型与引用类型的转化
        算法
    泛型
        c#的泛型支持:类,结构体,接口,委托以及方法成员
        c#的泛型可采用"基类,接口,构造器,值类型/引用类型"的约束方式来实现对类型参数的显示约束
        可以定义类型安全的数据结构
        因为防止了拆箱和装箱,所以可以显著提高性能
        可在支持泛型和扩展方法时,能够直接对类型使用扩展方法,而不用再反射调用了。
        值类型处理使用泛型比不使用泛型集合效率高很多
        引用类型处理用泛型和不使用泛型集合差不多
    数据访问
        数据库连接最晚打开,最早关闭
        尽量使用ExecuteReader来读取数据
        DataTable比用DataSet性能好(除非要保存关系)
        合理使用连接池
        适当使用SQLCLR做存储过程
        不要忘记DataReader打开后是需要关闭的
        (cmd.ExecuteReader(ConnectionBehavior.CloseConnection); or if (sdr.IsClosed) sdr.Close())
        非托管内容需要显示的去关闭
    循环
        尽量减少循环体中设置/初始化变量
        避免在循环中修改被便利对象的子元素
        在多线程场景中,循环执行时适当使用
        sleep会提高系统整体性能
        避免使用递归调用和嵌套循环
        推荐尽量使用foreach替代for
    异常处理
        捕获和抛出异常都是消耗比较大的操作,尽量减少try的次数,避免使用异常来控制处理逻辑
        避免引发不必要的异常
        捕获制订的异常,尽量避免使用异常的基类System.Exception
        处理异常时,在finally中释放占用的资源(连接,文件流等)
    位运算
        不要忘记位运算这个性能极高的东东
    其它
        减少使用输出参数
        避免使用ArrayList,尽量使用泛型列表
        部署之前禁用调试模式
        使用常量避免创建对象(如string.empty替代"")
        避免使用空的析构函数
        减少类型转化
        如果数据结构符合键值对的形式,建议使用泛型字典(非泛型情况下用hashtable)
        提升i/o速度,并减少i/o数量
        若对反射机制不熟悉,应在关键模块代码中避免使用它;
        推荐学习使用老赵的FastReflectionLib

  • 相关阅读:
    带你封装自己的『权限管理』框架
    一夜搞懂 | JVM 线程安全与锁优化
    一夜搞懂 | Java 内存模型与线程
    一夜搞懂 | JVM 字节码执行引擎
    一夜搞懂 | JVM 类加载机制
    一夜搞懂 | JVM GC&内存分配
    一文洞悉JVM内存管理机制
    Redis 的基本数据类型 和 基础应用场景
    MyISAM 和 InnoDB 索引结构及其实现原理
    一次性搞懂 PHP 中面向对象的所有知识点。
  • 原文地址:https://www.cnblogs.com/feng-NET/p/4664495.html
Copyright © 2020-2023  润新知