现在的位置: 首页 > 综合 > 正文

程序结构和性能优化

2013年10月07日 ⁄ 综合 ⁄ 共 707字 ⁄ 字号 评论关闭

最近在写一套关于blog迁移的程序,由于涉及到页面分析就写了一个笨笨的循环检测程序

有段代码大致如下

public string t1(string str)
{
  
for(int i=0;i<str.length;i++)
  
{
    
if(str[i]=='<'&&(CountLength(str.Substring(1, i),"xxx")%2==0))
    
{
           ... ....
    }

  }

}

 其中CountLength是个计算方法,计算str中xxx出现次数;

这样的一段代码你认为会有问题吗?

至少我最初是这么写的也没有发现有什么问题。

但是,后来发觉整个系统的代码处理完所有数据居然需要花费15分钟,太慢了,受不了。

开了性能检测工具,得出的结果是程序在迁移blogcn的站点时,blogcn的服务器太慢,socket的connect和recieve方法耗用的时间太多,基于socket的东西动不了,就只能想其他办法

追查代码访问计数,居然发觉countlength居然被调用了5w多次,占用了大概20秒左右。

于是对程序做了调整,修改为了:

if(str[i]=='<')
{
  
if(CountLength(xxxxx))
  
{
  }

}

对比起来我后面的代码风格很不紧凑,而且大家大概一般都喜欢原来的模式。

但是这一改CountLength只被调用了3w多次,时间缩短为13秒左右。成果可喜

看似不清晰和简约的编码风格却提高了性能,是之前没有预料到的。

也提醒了俺以后要更注意编码习惯。

另外这段时间对于http协议,session,cookies重新有了进一步的认识。

 

抱歉!评论已关闭.