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