none
.net 1.1 的项目升级到.net 3.5 后效率下降 RRS feed

  • 问题

  • 最近公司的一个项目计划从.net 1.1升级到.net 3.5 .使用 VS2008 SP1 转换工程一切顺利。但是运行项目时发现,在一些大数据量查询,计算功能的菜单,运行效率明显下降。1.1中只要一分钟就能执行完成的页面,在3.5中5分钟也不能出来。该页面使用过从数据库一次查询出数据后,循环通过datatable.select的方式计算数据,拼接table在前台显示。目前看来慢是慢在循环计算数据(如根据条件通过datatable.select取销量的累加).
    请各位高人解答下其中的原因。
    谢谢。
    2009年8月11日 9:22

答案

  • 你好,较少装箱拆箱的操作以及类型转换的操作,多采用泛型集合类能提供性能!
    jon.valett@gmail.com
    • 已标记为答案 nexus_Cao 2009年8月13日 1:25
    2009年8月12日 15:33
    版主

全部回复

  • 你好,如果你只是想聚合求一些汇总数据,可以使用 DataTable.Compute 方法来替换你的遍历求和,
    知识改变命运,奋斗成就人生!
    2009年8月11日 10:05
    版主
  • 你好,5分钟都没有出来,是不是出现异常了啊!
    jon.valett@gmail.com
    2009年8月11日 10:09
    版主
  • 怎么不用查询或者存储过程来做?

    Please mark the post answered your question as the answer, and mark other helpful posts as helpful.
    Visual C++ MVP
    2009年8月11日 14:35
    版主
  • 你好事情是这样的,这个页面需要重从A B C 中查询记录,根据 A表循环,从B表中根据C表中的对应关系取得 今年和去年同期的销售数据 ,按12个月,产品分组统计组成一个同期比。运行过程中没有出现异常只是程序执行的特别慢。我的做法是先把A,B,C表中对应查询范围内的数据查出(这一部分运行的很正常)。然后根据 A表循环取从C表中取数据 ,再根据 A表和C表的数据 取B表的,内容,就是在循环的石油时候速度下降的很明显。
    谢谢大家的回复。
    2009年8月12日 1:19
  • 怎么不用查询或者存储过程来做?

    Please mark the post answered your question as the answer, and mark other helpful posts as helpful.
    Visual C++ MVP

    比如说有一千条记录,如果循环查询的话太可怕了。
    2009年8月12日 1:20
  • 你好,存储过程中不一定使用游标,这个功能放在存储过程中实现比较合适,你可以使用临时表、表变量来计算出中间结果,然后再通过关联中间结果来得到最终的结果
    知识改变命运,奋斗成就人生!
    2009年8月12日 1:32
    版主
  • 你好,存储过程中不一定使用游标,这个功能放在存储过程中实现比较合适,你可以使用临时表、表变量来计算出中间结果,然后再通过关联中间结果来得到最终的结果
    知识改变命运,奋斗成就人生!

    你好,谢谢你的回复。
    现在的情况是,我从数据库里查询数据并不慢,是慢在内存中循环计算的地方,我就是不理解为什么.net3.5在方面的效率反而比不上.net1.1,原本1.1的时候也慢的,后来打了个补丁速度就快了。
    2009年8月12日 2:17
  • 你好,你好你可以检查有没有不必要的转换,try catch 等,不过只看需求的话还是建议你在存储过程中实现。
    知识改变命运,奋斗成就人生!
    2009年8月12日 11:52
    版主
  • 你好,较少装箱拆箱的操作以及类型转换的操作,多采用泛型集合类能提供性能!
    jon.valett@gmail.com
    • 已标记为答案 nexus_Cao 2009年8月13日 1:25
    2009年8月12日 15:33
    版主
  • 你好,谢谢你的回复,问题应该就在这里,谢谢。
    2009年8月13日 1:26