1、避免不必要的执行操作
2、关闭不必要的Session状态
3、注意使用Server Control 不必要时可以不使用Server Control
4、不必要时可以关闭ViewState
5、不要用Exception控制程序流程
try { 
result = 100 / num;
}
 catch (Exception e) { 
result = 0;
 }
6、只读数据访问不要使用DataSet 使用SqlDataReader代替DataSet
7、关闭ASP.NET的Debug模式  web.config里的debug要为false,并且dll文件编译是要生成为release版本的
8、使用ASP.NET Output Cache缓冲数据
9、对大量使用的很少更新的数据进行数据缓冲
9、尽量使用存储过程数据访问
10、页面能静态的就不要动态
11、能用JS实现的效果都用JS实现,能在客户端实现的就减少回发
12、转向用Server.Transfer,不用Response.Direct
13、ADO.NET对象在一次使用过程中不要重复打开创建,尽量使用一个Connection、一个Command、一个DataReader,并且记得不再调用数据库数据时马上关闭、释放
14、数据集采用要多少给多少,杜绝不分字段不分页
15、能不用DataSet/DataGrid就不要使用
16、运行在win2003企业版上
==========================================
希望进来的朋友谈谈你在提高效率方面的感想,并希望继续补充
我个人认为系统的效率是必须要时时考虑的,不能忘记。

解决方案 »

  1.   

    5、不要用Exception控制程序流程
    try { 
    result = 100 / num;
    }
     catch (Exception e) { 
    result = 0;
     }
    为什么呢????
      

  2.   

    1的原因就不用提了吧
    2减少消耗内存
    3减少server control解释成html的时间
    4减少传递时增加的隐藏数据,同时也减小传输文件
    5为什么非让它撞南墙再回头
    6SqlDataReader效率高于DataSet
    7正是版本不应用Debug
    8Output Cache缓冲的页听说比静态也还快(直接从内存输出连文件都不用读)
    9同样的数据,预先拿出来,放到内存总比在数据库或文件中快吧
    9存储过程是数据库预先优化和编译的
    10动态的需要先解释啊
    11办一件事,故意让你来回跑上几趟,你乐意吗?
    12Response.Direct需要先回到客户那里报个到
    13本来你手中有个笔,可是写字时你却先放下,再换一个
    14要枝给树
    15我认为DataGrid过于花哨,DataSet用来缓存数据很好,经常要换的话就浪费了
    16win2003企业版是集成.NET的操作系统
      

  3.   

    再加上一条,尽量不用windows、.net framework和asp.net。因为微软都已经承认.net较之以前的系统更加耗费资源。最好用dos不要用windows,因为微软也无法否认相比之下windows太慢。
      

  4.   

    9、尽量使用存储过程数据访问
    12、转向用Server.Transfer,不用Response.Direct
    这两条需要重新讨论吧?(持保留意见,^_^)
      

  5.   

    5、不要用Exception控制程序流程
    try { 
    result = 100 / num;
    }
     catch (Exception e) { 
    result = 0;
     }
    为什么呢????
    ==================》(献丑了)
    因为try{}catch(Exception e) {}会占用资源。
    而象这个例子,明显可以通过判断来避免错误出现,只要num != 0 这个语句就不会出问题。
    所以可以这样写。
    if( num != 0 )
       result = 100 / num;
    else
       result = 0;
      

  6.   

    try比if 应该会更消耗资源,,12、转向用Server.Transfer,不用Response.Direct这条不太理解。。
      

  7.   

    5、不要用Exception控制程序流程
    try { 
    result = 100 / num;
    }
     catch (Exception e) { 
    result = 0;
     }因为.net Exception handling的开销是比较大的,而且我们也不知道它内部到底作了哪些处理,如果换成对num作if判断开销就小很多了
    7、关闭ASP.NET的Debug模式  web.config里的debug要为false,并且dll文件编译是要生成为release版本的我每次给客户的dll都是release的,但是web.config中的Debug没有改成false,能否解释这个配置的详细作用?
      

  8.   

    更正:
    12、转向用Server.Transfer,不用Response.ReDirect
      

  9.   

    对 "12、转向用Server.Transfer,不用Response.ReDirect" 的一点说明
    ---------------------------------------------------------------
    Server.Transfer 发生在服务器端,客户端是不知道的,所以,没有 B/S 的交互,节省资源Response.ReDirect 实际在 B/S 之间进行两次交互,同时, 在IIS的Perform上,可以看到,Redirect操作,实际是引发一个 Exception 的,对IIS性能也有降低
    不过,Server.Transfer 只能转向到 同目录的页面,而且在 ASP.NET中, 不能转向静态页面。
    但是 它可以 保留上页面的所有数据,如FORM,PARAM 等
      

  10.   

    以上虽然对ASP.NET 的性能有所提高,但是给程序员带来太多的麻烦。
    "能不用DataSet/DataGrid就不要使用",这些恰恰是大大提高开发速度的地方啊。有时候也要适当为自己想想呢。
      

  11.   

    关于Server.Transfer的不同意见
    Server.Transfer可以转向不同目录的页面
    Server.Transfer可以转向静态页面
      

  12.   

    补充:使用ADO.NET的时候,尽量用存储过程,但是如果使用SQL语句时,尽量用一个ExecuteReader()执行.将你多次SQL封套在一个SQL中,一次取出..避免多次读取数据库.远程使用并需要传输DataSet的时候,用DataSet.GetChanges()获取更新过的DataSet并传输,减少传输的数据量..
      

  13.   

    我倒是很喜欢用DataSet和DataGrid,很灵活,也很方便.现在服务器性能都很好,感觉不到有什么问题
      

  14.   

    关于 Server.Transfer 的说明ASP 中, Server.Transfer 可以转向 HTM 文件,但 .NET 中不可以ASP 中, Server.Transfer 必须在同目录下, 但 .NET 中可以是不同目录
      

  15.   

    3、注意使用Server Control 不必要时可以不使用Server Control============你的意思是不是尽量地不用Server Control呀?我觉得Server Control也是挺好的。你说在运行时 Server Control 要转换为html,要花一些时间,但是,如果你用htmlControl的话,往往要加上 runat=server ,那么加上这一句后,系统又要做些什么操作呢?总不能什么都不做吧。所以说,效率上应该差不多少,即使差的话用户也是感觉不到的。
    但是Server Control却会带来很多的好处,比如保留状态等。当然有些时候还是要用 htmlControl的。
    try时能不用就不用的,因为它会明显增加系统的反应时间(在抛出异常的时候)。
    不是只有DataSet呀,还有DataTable 、DataRow呀,都是可以用的呀。DataReade只在函数内部使用的好,用完后要显式 close()才行。
     
      

  16.   

    你说在运行时 Server Control 要转换为html,要花一些时间,
    但是,如果你用htmlControl的话,往往要加上 runat=server ,那么加上这一句后,系统又要做些什么操作呢?总不能什么都不做吧。
    ============
    你有些误解,如果不用Server Control 尽量也不要用htmlControl 而是直接用html,也就是能直接使用html的就不要再麻烦系统负责解析了。
      

  17.   

    在使用 Response.End、Response.Redirect 或 Server.Transfer 时出现 ThreadAbortException
    对于 Server.Transfer,请改用 Server.Execute 方法。
      

  18.   

    远程使用并需要传输DataSet的时候,用DataSet.GetChanges()获取更新过的DataSet并传输
    =======
    不太理解,
    一查到的帮助是:获取 DataSet 的副本,该副本包含自上次加载以来或自调用 AcceptChanges 以来对该数据集进行的所有更改。
    提交自加载此 DataSet 或上次调用 AcceptChanges 以来对 DataSet 进行的所有更改。
    说明必须是通过该数据集修改的数据,如果不是呢?
    =====
    令开求助贴
    http://community.csdn.net/Expert/topic/4145/4145995.xml?temp=.4990198
      

  19.   

    在使用 Response.End时出现 ThreadAbortException
    我用Response.Redirect 或 Server.Transfer 时没有出现ThreadAbortException
    =========
    对于 Server.Transfer、Server.Execute 方法
    Server.Execute 使用另一页执行当前请求对于当前请求
    Server.Transfer 终止当前页的执行,并使用指向一个新页的指定 URL 路径来开始执行此新页。
    ====
    请问如果我不需要另一页继续当前的请求用哪个好?
      

  20.   

    补充:能用html的就不要用aspx的
      

  21.   

    是不是能不用asp.net尽量不用asp.net?
      

  22.   

    不好意思?问下怎么“ADO.NET对象在一次使用过程中不要重复打开创建,尽量使用一个Connection、一个Command、一个DataReader,”,给个例子看看
      

  23.   

    13、ADO.NET对象在一次使用过程中不要重复打开创建,尽量使用一个Connection、一个Command、一个DataReader,并且记得不再调用数据库数据时马上关闭、释放
    -------------------------------------------------------------------
    楼主的这句话我是赞成的。但是,到底用多少个Connection、Command、DataReader不是你说了算的,是计算机说了算的。
      

  24.   

    可以把Connection、Command、DataReader
    放大到一个类里
      

  25.   

    转向用Server.Transfer,不用Response.Direct
    不明白啊!!
    Response.Direct(url,true);有什么不好?请赐教......
      

  26.   

    记得头两个月有一次微软的培训,主要是为了提高.NET效率的,怎么都跟你说的一样啊哥们你不会是微软的工程师吧哈,连顺序都没变我想说的是各位对这些应该有些了解但也不必要太过注意,把上面那些点注意全的主要是针对访问量比较高的项目 如过你的项目针对3,4百人以内的微软的工程师也说了那还是用你的DATASET+ datagrid 比较好 等等等..
     
    很多事情不能太绝对了 因项目而异
      

  27.   

    对了,还有一点就是控制好VIEWSTATE 对一些不做刷新的页面完全可以屏蔽掉VIEWSTATE,这点也累点,理论上挺好,但实际中我看都给开着 呵呵
      

  28.   

    楼主讲得是很不错的.我做WEB开发的终极设计就是,尽量页面静态化,尽量在网站的前台不同数据库打交道,尽量在前台减小.aspx文件.
      

  29.   

    13、ADO.NET对象在一次使用过程中不要重复打开创建,尽量使用一个Connection、一个Command、一个DataReader,并且记得不再调用数据库数据时马上关闭、释放
    ========================================================
    可以把Connection、Command、DataReader放大到一个类里,我也是这么用的。
    在一次使用过程中可能需要多次连接数据库,获取数据
    那么在Open是创建Connection、Command,读取数据使用一个公共DataReader
    在完成一项读取工作后,如果还要访问数据库不要关闭数据库,不释放资源
      

  30.   

    在完成一项读取工作后,如果还要访问数据库不要关闭数据库,不释放资源
    jsyhello这条不对。你还没理解连接池的概念。在.net里面,应该尽量晚的打开连接。尽早的关闭连接。
    如果还要访问数据库,也要关闭,等用的时候再打开。
      

  31.   

    虽然.net更加消耗资源,但是新的软硬件也会提供更多可用的资源阿
      

  32.   

    我看微软的 Starter Kits 也是像 rainlake(rainlake) 说的打开-获取数据-关闭
      

  33.   

    5、不要用Exception控制程序流程
    这个说法不是很认同..那么你如何捕捉错误...并存入某些错误日志..仅仅靠你的那个If判断么?
    当然.我说的意思在再对数据库操作的时候.
      

  34.   

    虽然为了运行速度,建议多用JS和少用服务器控件。但时代是进步了,思想不能老停留在以前,控件的作用就是为了加快开发和减少开发难度,增加代码重用,只要不是很大访问的页面和模块,用控件真是好用。后台管理就不用说了,全控件编写,JS我都懒得用,也尽量少用。要把页面当程序写。
      

  35.   


    如果错误是预知的,不要用Exception控制程序流程
    如果错误不可预知,不用Exception控制错误还能用什么?
      

  36.   

    http://blog.csdn.net/y97523szb/
    "在网络状态较好的情况下,Redirect(url)方法效率最高!! 
    Server.Transfer方法和Server.Execute方法最灵活!! 
    Server.Execute方法占用资源最多. "
    看你的具体情况吧……灵活点比较好。