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

  • 相关阅读:
    mysql命令行备份数据库
    js关闭当前页面的几种方式
    Linux添加FTP用户并设置权限
    在Activity的Title中加入进度条
    android例子程序(ApiDemo)的简单分类整理
    使用WindowManager窗口管理员,把View显示在屏幕中间
    android手动调用振动器(Vibrator)
    android 监听SDCard安装和卸载的代码片段(测试通过)
    android Paint和Color类介绍 使用示例
    GC_EXTERNAL_ALLOC freed 与 GC_EXPLICIT freed 是什么?
  • 原文地址:https://www.cnblogs.com/IS2120/p/6745922.html
Copyright © 2011-2022 走看看