回 帖 发 新 帖 刷新版面

主题:大家看看如何将下面的函数改为非递归!

Private Function ProcessTags(str)
    Dim m,ms,tmp
    
    Set ms = Rex.Execute(str)
    
    For Each m In ms
      tmp=dicVars.Item(m.SubMatches(0))
      If Len(tmp)>0 Then
        str=Replace(str, m.Value, tmp)
      Else 
        str=Replace(str, m.Value, Escape(m.Value))
      End If
      
      str=ProcessTags(str) '递归·如何改为非递归来提高性能?
    Next
    
    ProcessTags=str
  End Function

回复列表 (共1个回复)

沙发

发觉VBScript的递归性能真的差很多,我试着注释掉那行递归的代码,运行的时间上在C1.6G的机器上相差了100ms左右的时间。

我来回复

您尚未登录,请登录后再回复。点此登录或注册