zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    克如斯卡尔 P1546
    真正的spfa
    第四课 最小生成树 要点
    关于vscode中nullptr未定义
    cmake学习笔记
    python学习笔记
    (BFS 图的遍历) 2906. kotori和迷宫
    (图论基础题) leetcode 997. Find the Town Judge
    (BFS DFS 并查集) leetcode 547. Friend Circles
    (BFS DFS 图的遍历) leetcode 841. Keys and Rooms
  • 原文地址:https://www.cnblogs.com/IS2120/p/6745922.html
Copyright © 2011-2022 走看看