首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 编程语言 > .NET > C#.NET > .NET应用程序的优化
【标  题】:.NET应用程序的优化
【关键字】:.NET
【来  源】:http://blog.csdn.net/hongyelzg/archive/2006/12/15/1444835.aspx

.NET应用程序的优化

 
.NET应用程序的优化
    
      由于.NET编写的程序提供了一个中间层,MSIL(微软中间语言),所以编写的程序在启动的时候可能会有点慢,虽然微软公司对CLR进行了足够的优化,但是启动速度可能还是会感觉到比编译为目标码的慢些,所以优化的工作是很有必要的了.java写的程序就更慢了,java现在也采用了.NET上的即时编译技术.
    C#/VB编译器编译后的并不是目标机器码,而是MSIL,加载时由CLR即时编译成机器码,这个过程可以对代码进行平台优化,注意一点:CLR只编译要执行的那部分代码,所以就可以从这里下手优化启动代码.
     <1>减少启动要执行的代码,把不必要的代码,和不需要使用的代码,滞后执行,尽量不要在启动时执行太多的代码,如果某些东西不是很快就需要可以选择需要时执行,或使用单独线程执行.
     <2>不要在Load里面写好多代码,可以把代码移到Main函数中.
(1)精简代码(2)滞后加载(3)独立线程执行(4)移动代码
   
    代码优化:
代码优化后可以减少代码数量和优化算法,这样可以提高代码质量,提高运行速度,但是不要在编写代码时就开始优化,首先要使程序运行起来,过早的优化只会陷入优化陷阱,所以优化代码的工作要在写好了基本运行代码后在做.
    优化算法:
好的高效的算法可以大大提高执行速度,值得去研究更好的算法
    在优化时没有必要做一些基本的工作,比如说把long改成int或其它的,这对于改进性能没有多大的帮助,而应该在消耗大量CPU的代码上下功夫.
    还有要即时释放不要使用的对象,不要在循环中创建线程等,对于频繁大型对象可以考虑使用对象池,频繁创建线程可以考虑使用线程池.
  然后如果实在是程序太大,启动速度无法在提高时可以使用闪窗体,这样可以让用户觉得等待不是那么枯燥,可以在闪窗中显示加载速度和在做什么,这样效果就比较好了.

   代码优化了后,还有一个可以提高启动和运行速度的方法就是不被好多程序员注意的本机印象这个功能,在发布程序集时可以在安装后可以采取对程序集生成本机镜像,这样可以很大程度的提高运行和启动速度的,举个例子:我写了一个播放器的程序,代码不少有15000行左右,而且程序还有好多自绘制的地方,如果不使用生成本机镜像的话启动速度比较慢,大概20s的样子,有比较长的等待时间,但是采用生成镜像后启动速度几乎是点击后就打开了.
   注意生成的镜像只是生成了本机镜像的缓存并没有实际把程序集修改成本机代码,而是把本机代码缓存起来.

   代码总是在不断的重构和优化,不要以为功能实现就完事了,应该要想到如果才能使程序运行的更好,程序实现的更简洁更优雅,程序界面更友好,这就要用上设计模式和重构这两种技术了.
   个人认为代码写的好是可以用来欣赏的,也是一件艺术品.


-----------------------------------------------------------------------------------------
                            风中过客---2006/12/15
---------------------------------谢绝转载-------------------------------------------------
可以到action script专区去发贴,那里也有现成的帖子:【上一篇】
PM我也有相同的问题:就是在FLASH里面设:【下一篇】
【相关文章】
  • .NET Remoting Use Cases and Best Practices [翻译]
  • 正在写一个vs.net的杂烩插件
  • .net读取文本格式的文件并输出
  • Ajax.net使用配制
  • .Net类库一览
  • asp.net页面中调用js文件
  • Asp.Net22.0中ObjectDataSource+Formview实现添加,修改
  • 用动软.NET代码生成器Codematic配合Nant开发W eb三层框架
  • 反编译.NET程序之王-----LutZ Roeder’s .NET Reflector
  • 在没有Framework的机器上部署.NET程序
  • 【随机文章】
  • 一个实现将动态页面转为静态的方案
  • Linux内核启动地址
  • 黑客兜售上万用户信用卡资料 英国政府不安
  • .net 2.0 下发送邮件的方式。
  • 嵌入式系统概述
  • 一定范围内随机排列不重合的多个小球
  • 传奇世界 传世打宝PK解析
  • .NET目标(二)
  • linux下做磁盘配额--ftp
  • PhotoImpact照片边缘处理
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 软讯网络 All Rigths Reserved.