none
StringBuilder与framework的调试【vs2008sp1】 RRS feed

  • 问题

  • 描述:

    我需要查询一个订单的反向漏斗销售的商机目录(csv文件提供下载)

    也就是说一个订单是由1+n个商机产生的

    在查询当前季度商机目录的时候就非常的慢,或者说是越来越慢

    因为目录下要生成1+n个文件,不同的客户经理也会生成不同目录

    销售总监要生成他说负责的客户经理的商机目录(广州,上海,京津冀,直接死机)

    根据调试发现 GetBusinessListString这个方法执行非常慢

    这个方法下就是StringBuilder的字符串生成

    我在msdn下发现了这个

    http://msdn.microsoft.com/zh-cn/library/cc667410%28VS.90%29.aspx

    他允许我查看StringBuilder到底干了什么!

    但是我按照他所描述的进行了设置,但是起不到作用

    问题:

    如何进行调试StringBuider

    如何提高性能

    2010年5月11日 5:05

全部回复

  • 发张图像可能清楚些

    2010年5月11日 5:11
  • 符号目录

    2010年5月11日 5:12
  • 您的图我还是什么也看不到:

    不过我的建议是:你索性下载一个Reflactor反编译看看StringBuilder干了些什么。不过我认为微软应该对它的代码优化的,建议还是看看自己的程序逻辑是否存在冗余等问题。呵呵,祝您成功。(Reflactor下载地址:http://reflector.red-gate.com/download.aspx?TreatAsUpdate=1)如果安装了VS2010,2008,2005,自动紧密集成(菜单上会有“NET Reflactor”)字样。
    • 已标记为答案 KeFang Chen 2010年5月25日 6:22
    • 取消答案标记 phoebuswei 2010年5月28日 8:41
    2010年5月11日 9:17
    版主
  • 你好!

         一般优化的话,我建议还是优化我们的代码,还是建议优化类库中的类来实现自己的类的,类库中类的设计都是有自己特殊目的的,你可以看下StringBuilder的源代码,看看如何使用他更合理,请问可以提供你的相关代码吗?


    周雪峰
    • 已标记为答案 KeFang Chen 2010年5月25日 6:22
    • 取消答案标记 phoebuswei 2010年5月28日 8:41
    2010年5月12日 13:12
    版主
  • 我使用了Reflactor查看了StringBuilder发现他在系统字符长度上的开销和copy过大,在使用中迫使gc强制实行

    我提供相关代码的可能性不大,因为反向漏斗牵扯到,商机(大中小)报备,建立,统签,立项,跟踪,审批,订单等类中多个方法

    其中数据来源于数据库,使用离线数据DataTable,这个DataTable的反映速度很好,包括SQL的优化都是在1秒以下

    主要是在 csv文件上的开销,就像我说销售总监查询是一个很可怕的事情,而且此功能使用周期相对固定

    比如下个月要看分区会议,那末各个分区经历开始频繁使用,然后系统死机,电话不断,目前这个问题十分的头疼

    2010年5月14日 8:37
  • 不要怀疑 StringBuilder 的效率,绝对是业务逻辑上出问题了。

    如果不相信的话,可以自己建一个干净的测试项目,里面仅用到 StringBuilder ,没有任何业务逻辑。

    再大的数据量也是飞快。。。。除非你觉得内存的读写速度太慢了,这个另当别论。

    • 已标记为答案 KeFang Chen 2010年5月25日 6:22
    • 取消答案标记 phoebuswei 2010年5月28日 8:41
    2010年5月15日 6:13
  • 若需要调试.NET框架的源代码,您需要下载并安装SSCLI。

    StringBuilder并不适合处理“超大”文本,您应该考虑使用StreamWriter。

    您使用的相册需要注册用户方可访问。


    Most questions i'm interested in might have two or more possible answers i know or i don't know. So please read question carefully before you try to answer, and explan your question detailedly before asking for help. 很多看起来简单的问题都存在多种可能性,如果您不能详细的解释,别人就不能正确判断出您所遭遇的实际状况,因而不能给出最适合的解决办法。在您没有给出详细信息的情况下,施助者只有张贴大量有可能有关的解决办法。而您可能没有耐心阅读所有这些东西,在这种情况下您就客观地形成了对施助者的伤害——除非“施助者”并没有用心去尝试帮助您。 同样地,当您尝试解答一个看起来“好像遇到过”的问题的时候,您也需要详细地阅读和理解这个问题。如果您不了解问题的细节,您可能会给出不相关的或者无助于解决当前问题的解答。
    • 已标记为答案 KeFang Chen 2010年5月25日 6:22
    • 取消答案标记 phoebuswei 2010年5月28日 8:41
    2010年5月16日 15:55
  • 为什么不能怀疑stringbuilder那

    我的业务是StringBuilderStreamWriter联合处理的

    stringbuilder 主要负责按照编码规则生产字符串

    ——

    我把问题在描述一下啊,看看能不能给我找一个好的解决方法

    我所看到的就是stringbuilder方法处理过程很慢

    客户经理,总监要查看信息,

    信息来源于数据库,以总监为例子,他能看到的信息如下

    总监下所有分区(如上海、天津)

    分区下分区经理(如a和c输入该总监)

    分区经理下销售经理(内部销售对应多个外部销售(1+N),外部销售对应1个内部销售【实际情况是,没有或多个】)

    销售所下订单

    订单——是几级审批——谁审批——由那些跟单产生——由那些立项产生——由那些商机产生

    得到数据后按照规则生产csv文件

    ————————————————

    我们现在只能是叫总监们去派发工作单给服务器叫他们来帮助生成,效率很慢,数据准确性也不高

    @@@@@@@@@@@@@@@@@@@@@@@

    有人偷偷的改写我的问题状态(郁闷)

    2010年5月28日 9:00