当前位置: 首页 > news >正文

淮安网站建设哪家好旅游网站 建设平台分析

淮安网站建设哪家好,旅游网站 建设平台分析,免费网站开发软件有哪些,flash网站引导页面制作最近写了一个高性能的敏感词检测组件【ToolGood.Words】。 一、高性能#xff0c;它的效率到底有多快#xff1f; 如果将正则表达式的算法效率设为1#xff0c;高性能可达到正则表达式的1.5万倍。 二、选一个巧妙的算法#xff1a; AC自动机#xff08;Aho-Corasick Autom… 最近写了一个高性能的敏感词检测组件【ToolGood.Words】。 一、高性能它的效率到底有多快 如果将正则表达式的算法效率设为1高性能可达到正则表达式的1.5万倍。   二、选一个巧妙的算法 AC自动机Aho-Corasick Automation算法在1975年产生于贝尔实验室是著名的多模式匹配算法之一一个常见的例子就是给定N个单词给定包含M个字符的文章要求确定多少个给定的单词在文章中出现过AC自动机在匹配文本时不需要回溯处理时间复杂度与pattern无关仅是target的长度O(N)构建AC自动机的时间复杂度。 AC自动机的构建主要由三个步骤 2.1、针对所有模式串构建Trie树。 2.2、针对所有Trie树上的接点构建Fail指针Fail指针指向的是如果当前节点匹配失败则从通过Fail指针指向的新的节点开始匹配但新的节点必须满足所在在新节点模式串的前缀必须是转移前的节点所在模式串的子串也就是已经匹配成功的部分。 2.3、正式匹配过程a从Trie树root节点开始每次根据读入的字符沿着自动机向下移动。b当读入的字符在分支中不存在时递归走Fail指针路径。如果走Fail指针路径走到了root节点则跳过该字符处理下一个字符。c因为AC自动机是沿着文本移动的所以在读取完所有输入文本后最后递归走失败路径直到到达根节点这样可以检测出所有的模式。   三、优化AC自动机算法 细看AC自动算法匹配过程在(b)步骤我们会发现节点匹配失败后会顺Fail指针继续执行这个步骤可以优化优化Fail指针将相同的节点合并成一个同一个节点。   四、填平性能低洼地 优化AC自动机算法后测试代码后会发现代码性能没有太大提升。 经测试发现TrieNode获取下一节点的方法TryGetValue占用了90%的计算量。 分析Trie树有两个特点1、root节点下有大量子节点2、中间节点的子节点数量很少。 优化TryGetValue方法 1、root的子节点转成数组类型 2、修改TryGetValue方法内   public  class  TrieNode {      public  bool  End {  get ;  set ; }      public  List string Results {  get ;  set ; }      private  Dictionary char , TrieNode m_values;      private  uint  minflag   uint .MaxValue;      private  uint  maxflag   uint .MinValue;      //....      public  bool  TryGetValue( char  c,  out  TrieNode node)      {          if  (minflag ( uint )c maxflag ( uint )c) {              return  m_values.TryGetValue(c,  out  node);          }          node   null ;          return  false ;      } }   五、优化后的代码段   public  class  StringSearch {          TrieNode _root   new  TrieNode();          TrieNode[] _first   new  TrieNode[ char .MaxValue 1];          //.....          public  bool  ContainsAny( string  text)          {              TrieNode ptr   null ;              for  ( int  i 0; i text.Length; i) {                  TrieNode tn;                  if  (ptr   null ) {                      tn _first[text[i]];                  }  else  {                      if  (ptr.TryGetValue(text[i],  out  tn)   false ) {                          tn _first[text[i]];                      }                  }                  if  (tn !  null ) {                      if  (tn.End) {                          return  true ;                      }                  }                  ptr tn;              }              return  false ;          } }    六、性能对比图10W次对比 ToolGood.Words内的非法词(敏感词)检测类StringSearch、WordsSearch、IllegalWordsSearch、IllegalWordsQuickSearch; 注:C#自带正则很慢StringSearch.ContainsAny是Regex.IsMatch效率的1.5万倍。 Regex.Matches的运行方式跟IQueryable的类似只返回MatchCollection,还没有计算。 TrieFilter,FastFilter来源: http://www.cnblogs.com/yeerh/archive/2011/10/20/2219035.html   七、开源项目 码云 https://git.oschina.net/toolgood/ToolGood.Words GitHub: https://github.com/toolgood/ToolGood.Words 原文地址http://www.cnblogs.com/toolgood/p/6284718.html.NET社区新闻深度好文微信中搜索dotNET跨平台或扫描二维码关注
http://www.yutouwan.com/news/236280/

相关文章:

  • 巴中微小网站建设案例app下载地址
  • 网站建设与实践心得网站建设_seo技术支持
  • 设计公司网站运营吉林建筑大学本科招生网
  • 网站设计的必要性wordpress音乐播放器插件
  • 全国电子网站建设吴江网站建设收费
  • 建设网站对服务器有什么要求西宁工程建设招聘信息网站
  • 国际摄影网站企业网站搭建方案
  • 长沙做网站开发价格设计做的好看的网站有哪些
  • 甘肃省建设厅质量投诉网站新闻客户端网站开发
  • 阿里云搭建多个网站陕西住建厅网站官网
  • 莆田网站制作公司wordpress如何制作网站
  • 厦门专业网站推广建站南宁网站排名外包
  • 展示网站模版源码在网站做电子画册
  • 网站建设 seo模块软件生成器下载
  • 静态网站托管平台wordpress ajax json
  • 国外做网站用的程序古色古香 网站模板
  • 做网站的排名苏州园区人才市场
  • 西安论坛网站制作维护怎么做网页投票
  • 网站收录后然后怎么做14亿人口新冠死多少
  • wordpress网站导航龙岩论坛
  • 建筑公司网站新年贺词网站做跳转影响排名吗
  • 微小旅行社能否做网站旅行社网站策划
  • 邢台装修网站建设灵动网站建设
  • 如何建一个网站网站建设误区图
  • 技术网站源码wordpress厦门企业网站设计公司
  • 网站开发的一般流程wordpress编码修改
  • 介绍自己的做的网站嘉兴定制型网站建设
  • wordpress模板 图片站erp系统一般多少钱一年
  • 国外做电商平台的网站有什么网站开发人员没有按照设计开发
  • 最新的高端网站建设wordpress自定义分类模板