• Performance C#


    C# PERFORMANCE 性能

    //z 2012-3-28 15:04:03 PM IS2120@CSDN

    1. 最重要的是定位出 hot spot
    尽量优化哪些占用了大量时间的方法等,否则费了力气,效果不彰。

    2. class 一般不要有空的 dtor
    结构无法定义dtor,只有类可以
    每一个类只可以有一个dtor
    dtor不能继承或是重载
    不可直接调用;只能由系统(clr?)自动调用
    不可有modifiers或是任何的参数
    一个dtor会隐式的调用object的base class的Finalize
    即会迭代调用继承链上Finalize方法
    空的dtor不该被使用。(会造成效率的低下)
    由gc控制何时调用dtor。
    可以通过调用Collect来强制gc collection,但是这应该避免
    当你的应用程序援引了unmanaged resources,诸如windows,files和网络连接时,你应该使用dtor以释放这些资源。
    如果你的程序使用一个昂贵的外部资源,那么我们推荐你在轮到gc调用之前先回收这样的资源。通过使用继承IDisposable接口,并实现Dispose方法。

    3. string 和 stringbuilder
    如果需要大量的进行 string contact ,建立使用 stringbuilder 。
    3.1 可以使用 string.Fromat
    3.2 更为复杂使用stringbuilder
    这个的说法很多,很少一致的,还是具体情况具体分析哈

    4. boxing 和 unboxing
    装箱和拆箱都是极其昂贵的操作
    4.1 NewLateBinding.LateGet 
    进行诸如这样的操作的时候
    bool Equal(object a,object b)
    {
        return math.abs(a-b) < delta ;
    }
    double a,b;
    调用 
    Equal(a,b);
    在vb中编译器会使用这个来进行一些额外的操作(动态获取变量的实际类型?)

    5. 优化的一般原则
    设立目标;检查代码以确定需要优化的地方。
    首先是更好的设计以及正确的程序;只有当不符合目标时,才进行优化。经过优化的代码往往难以阅读和维护。
    如果一定要进行优化,从最慢的那一部分开始:定位需要进行提高的地方。
    //z 2012-3-28 15:04:03 PM IS2120@CSDN

  • 相关阅读:
    全国(省,直辖市,自治区,特别行政区)映射集合
    数据库辅助类
    时间格式化工具类
    密码加密(MD5)
    算法竞赛入门经典——第3章答案
    第三章学习小结—-转
    isalpha函数和isdigit函数
    重新实现库函数
    树状数组总结——转
    线段树——转
  • 原文地址:https://www.cnblogs.com/IS2120/p/6745922.html
Copyright © 2020-2023  润新知