language中文

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

visibility 239 comment 0 access_time 13 years ago

通过自己对一些教程、书籍的学习,以及自己在实际开发中的一些体会总结如下,希望能对大家在撰写高效率.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类有更高的执行效率;同时在使用多线程的时候应该谨慎,使用不当很容易导致整个程序的崩溃

info Last modified by Raymond 13 years ago copyright This page is subject to Site terms.

Subscribe newsletter

Please log in or register to comment.

account_circle Log in person_add Register

Log in with external accounts

More from Kontext

visibility 9454
thumb_up 0
access_time 13 months ago
visibility 38
thumb_up 0
access_time 11 months ago