C#代码优化学习总结(2)
2014-08-21 11:02
369 查看
C#代码优化,原文链接:http://www.cnblogs.com/youchun/archive/2010/03/07/1680299.html
1.Float并不比Double要快2.右移和预计算优化是有效的
3.减少冗余计算
4.string ax=string.Empty; 注:不要使用: string ax=""; I don't konw why.But it's Microsoft's convention.
5.比较字符串时不要用.ToLower()/.ToUpper()
replace by Equals()
Don't create a string never used later
6.Catch{}要捕获详细异常,不要再乱抛
catch the specific exception than "System.Exception" or rethrow the exception.
Catching generic exception types can hide run-time problems from the library user,
and can complicate debugging.
c#代码中影响性能的主要因素
资源的浪费
-内存的浪费
-对象的冗余
-cpu的浪费
拆箱,装箱
-值类型与引用类型的转化
算法
泛型
c#的泛型支持:类,结构体,接口,委托以及方法成员
c#的泛型可采用"基类,接口,构造器,值类型/引用类型"的约束方式来实现对类型参数的显示约束
可以定义类型安全的数据结构
因为防止了拆箱和装箱,所以可以显著提高性能
可在支持泛型和扩展方法时,能够直接对类型使用扩展方法,而不用再反射调用了。
值类型处理使用泛型比不使用泛型集合效率高很多
引用类型处理用泛型和不使用泛型集合差不多
数据访问
数据库连接最晚打开,最早关闭
尽量使用ExecuteReader来读取数据
DataTable比用DataSet性能好(除非要保存关系)
合理使用连接池
适当使用SQLCLR做存储过程
不要忘记DataReader打开后是需要关闭的
(cmd.ExecuteReader(ConnectionBehavior.CloseConnection); or if (sdr.IsClosed) sdr.Close())
非托管内容需要显示的去关闭
循环
尽量减少循环体中设置/初始化变量
避免在循环中修改被便利对象的子元素
在多线程场景中,循环执行时适当使用
sleep会提高系统整体性能
避免使用递归调用和嵌套循环
推荐尽量使用foreach替代for
异常处理
捕获和抛出异常都是消耗比较大的操作,尽量减少try的次数,避免使用异常来控制处理逻辑
避免引发不必要的异常
捕获制订的异常,尽量避免使用异常的基类System.Exception
处理异常时,在finally中释放占用的资源(连接,文件流等)
位运算
不要忘记位运算这个性能极高的东东
其它
减少使用输出参数
避免使用ArrayList,尽量使用泛型列表
部署之前禁用调试模式
使用常量避免创建对象(如string.empty替代"")
避免使用空的析构函数
减少类型转化
如果数据结构符合键值对的形式,建议使用泛型字典(非泛型情况下用hashtable)
提升i/o速度,并减少i/o数量
若对反射机制不熟悉,应在关键模块代码中避免使用它;
推荐学习使用老赵的FastReflectionLib
相关文章推荐
- C#代码优化学习总结(3)
- C#代码优化学习总结(1)
- C#代码精简优化技巧总结
- C#学习过程中vs使用和代码编辑技巧总结
- Excel VBA 学习总结 - 代码优化之道
- net学习之C#面向对象 大富翁V2.1 优化代码,加入. 全局变量,Exception异常.
- Andriod学习笔记1:代码优化总结1
- Java基础学习总结(99)——Java代码性能优化总结
- 10月31日学习总结之C#面向对象[三]
- 学习javascript点滴总结,包括一些常用代码1
- 在学习C#过程中的一些总结和收集的一些材料望对初学者有用
- VisualBasic代码优化总结
- 10月30日学习总结 之C#面向对象(二)
- C++代码优化方法总结
- C++代码优化方法总结
- .NET Romoting 学习总结(三)—— Remoting技术之设计模式实现代码安全
- luyikk Monster raid 一款使用C# 写的SYN 利器,完全代码共享,希望各位高手协助 优化.
- C++代码优化方法总结
- C++代码优化方法总结
- 网页代码常用小技巧总结续,网页制作学习