系统优化【2】----net程序
1.在适合的场景一定要使用单例模式,减少对象的创建
2.创建对象时避免不必要的对象初始化
3.字符串使用StringBuilder,避免使用"+",避免不必要的ToUpper 或 ToLower 方法。字符串拼装好之后再删除是很低效的写法。
4.使用using,对使用完毕的资源一定要释放。使用IDisposable 接口,避免空析构函数
5.对需要传递的值类型参数,如果不会进行改变,使用应用方式传递。
6.使用泛型,避免装箱和拆箱
7.尽量减小异常的捕捉范围
8.typeof 运算符比对象实例上的 GetType 方法要快,只要可能则优先使用 typeof 运算符。
9.C#主要支持 5 种动态创建对象的方式:
1. Type.InvokeMember
2. ContructorInfo.Invoke
3. Activator.CreateInstance(Type)
4. Activator.CreateInstance(assemblyName, typeName)
5. Assembly.CreateInstance(typeName)
最快的是方式 3 ,与 Direct Create 的差异在一个数量级之内,约慢 7 倍的水平。其他方式,至少在 40 倍以上,最慢的是方式 4 ,要慢三个数量级。
10. 可以把循环的判断条件用局部变量记录下来。局部变量往往被编译器优化为直接使用寄存器,相对于普通从堆或栈中分配的变量速度快。如果访问的是复杂计算属性 的话,提升效果将更明显。
2.创建对象时避免不必要的对象初始化
3.字符串使用StringBuilder,避免使用"+",避免不必要的ToUpper 或 ToLower 方法。字符串拼装好之后再删除是很低效的写法。
4.使用using,对使用完毕的资源一定要释放。使用IDisposable 接口,避免空析构函数
5.对需要传递的值类型参数,如果不会进行改变,使用应用方式传递。
6.使用泛型,避免装箱和拆箱
7.尽量减小异常的捕捉范围
8.typeof 运算符比对象实例上的 GetType 方法要快,只要可能则优先使用 typeof 运算符。
9.C#主要支持 5 种动态创建对象的方式:
1. Type.InvokeMember
2. ContructorInfo.Invoke
3. Activator.CreateInstance(Type)
4. Activator.CreateInstance(assemblyName, typeName)
5. Assembly.CreateInstance(typeName)
最快的是方式 3 ,与 Direct Create 的差异在一个数量级之内,约慢 7 倍的水平。其他方式,至少在 40 倍以上,最慢的是方式 4 ,要慢三个数量级。
10. 可以把循环的判断条件用局部变量记录下来。局部变量往往被编译器优化为直接使用寄存器,相对于普通从堆或栈中分配的变量速度快。如果访问的是复杂计算属性 的话,提升效果将更明显。