在项目的实际开发中经常发现性能的问题,我经常接触的是信息管理系统,这类问题也比较多,一般采取的优化方法是把数据库中的数据一次性读取出来,然后放入一个HASHTABLE中缓存起来,以后使用的时候不用再访问数据库。
不知道大家对于系统优化都有什么心得?

解决方案 »

  1.   

    这些是我收集的一些建议,贴出来,希望可以抛砖引玉:)
    Performance Tips for All Applications:Throw Fewer Exceptions 
    Make Chunky Calls 
    Design with ValueTypes 
    Use AddRange to Add Groups 
    Trim Your Working Set 
    Use For Loops for String Iteration—version 1 
    Use StringBuilder for Complex String Manipulation 
    Precompile Windows Forms Applications 
    Use Jagged Arrays—Version 1 
    Keep IO Buffer Size Between 4KB and 8KB 
    Be on the Lookout for Asynchronous IO Opportunities Performance Tips for ASP.NET Applications        Cache Aggressively
            Use Session State Only If You Need To
            Use View State Only If You Need To
            Avoid STA COM
            Batch Compile
            Remove Unnecessary Http Modules
            Avoid the Autoeventwireup Feature
            Encode Using ASCII When You Don't Need UTF
            Use the Optimal Authentication Procedure
      

  2.   

    楼上那篇 MSDN 文章是泛泛而谈, 比如第三条 Design with Value Types, 这个就不一定, 在需要大量操作 reference 的时候你传一个 value type (比如 struct) 那么 box 和 unbox 操作恰恰可能构成瓶颈.如果要用 Hashtable 存储数据肯定是很好的方法, 如果数据很大量, 有可能的话可以根据需求将数据分片, 每片设定一个优先级别 (按照访问的频率来动态调整优先级), 只将高优先度的记录储存在 Hashtable 里面.
      

  3.   

    性能优化大多时候要自己尝试并且根据实际情况取舍. 比如 "方法一" 比 "方法二" 快 20%, 但是实现 "方法一" 的代码要比实现 "方法二" 的代码多出 200%, 你评估之后会用哪个 ? 这就是非常个性化的问题, 诸如 MSDN 等等的权威文章不可能指引你全部.
      

  4.   

    这个要具体情况具体分析比如你说的hash 数据库里面的内容,只有存取非常频繁的时候才缓存其中的一部分,那种一个小时甚至一天才取一次的东西缓存就没有必要了。优化是一个比较复杂的话题
      

  5.   

    http://msdn.microsoft.com/msdnmag/issues/06/03/WindowsFormsPerformance/default.aspx
      

  6.   

    数据库设计很重要,在经常查询的字段上要建立索引,sql语句也有关系,不要使用 in 或 not in 等,查查相关资料,都有介绍的