关于提高.net应用程序效率的一些经验总结(转)

关于提高.net应用程序效率的一些经验总结
2009-04-14 23:11

 

通过自己对一些教程、书籍的学习,以及自己在实际开发中的一些体会总结如下,希望能对大家在撰写高效率.net应用程序方面有所帮助:

1,小心使用虚拟堆栈,不要滥用

不要在方法或者是函数中声明太多、太大的局部变量,比较明确的数目不要声明多余64个局部变量,无须实现太大的方法,尽量使用精小、多个实现的方法或者函数,这样可以产生较好的CLR程序代码,JIT也能够据此产生良好的本机执行代码。

2,关于string

string对象的内容不可改变的,如果使用 str="aaaa"+''bbb"等类似的方式来处理字符串,将会造成许多暂时字符串对象的建立和消灭,使得程序极为缓慢;应该采用StringBuilder类来处理类似的情况。

3,垃圾回收

一些书上在介绍垃圾回收的时候,可能会建议大家直接使用GC的垃圾收集方法,但是这样做往往是很危险的,有可能不自觉的执行了和垃圾回收器相反的行为;我们应该避免干扰垃圾回收器的工作,撰写体积比较小的对象;GC.Collect()可能会带来性能数百倍的损失。

4,关于集合Collection

在创建集合(ArrayList、Stack等)的时候最好在初始化的时候声明集合的大小(貌似在满足自己需要的集合的大小的最小素数比较好),定长的集合可以避免过多的复制所带来的性能损失;适当配置集合的大小可能带来很大的性能提升。

5,值类型和引用类型

我们知道值类型是存储在堆栈上的,而引用类型是存储在Heap上的;如果是对象比较小且不需要类特有的一些语义,那么采用值类型是更好的选择,可以带来更好的效率。

6,装箱和拆箱

装箱和拆箱是奢侈的指令,在程序中应该避免使用

7,关于反射

反射可以给我们带来很多方便,但是毕竟这是建立在昂贵的开销上的,所以大家在使用的时候应注意。

8,关于XML

应该避免滥用XML因为这是很昂贵、缓慢的东西。

9,不要滥用Exception

使用exception会在程序中产生Exception表格,这需要额外的内存,而且在Exception产生时也需要搜寻Exception表格中正确种类的Exception,这会让.net应用程序的执行速度缓慢下来;在使用的 使用应该使用明确的Exception比如ArgumentNullException而不是Exception。

10,关于Assembly

尽量值加载需要的Assembly因为这会带来很大的内存占用,自己深有体会,前段时间写的那么小的软件结果占用了几十MB的内存,应该及时卸载不需要的Assembly。

11,关于多线程

在使用多线程的时候,应尽量使用ThreadPool,它是托管的线程池比Thread类有更高的执行效率;同时在使用多线程的时候应该谨慎,使用不当很容易导致整个程序的崩溃

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值