|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
其实net网页编程之所以在曾经独步天下,就是因为他的跨平台、安全性,这两方面,效率可不是net网页编程的强项,反而是他最短的一块挡板,虽然net总是用理论证明比.NET快。但在我这里测试的时分,RegEx要快一倍摆布。可是仍是不太中意,由于我们网站上脏字过滤用的相称多,对效力已有了一些影响,经由一番思索后,本人做了一个算法。在本人的呆板上测试了一下,利用原文中的脏字库,0x19c的字符串长度,1000次轮回,文本查找耗时1933.47ms,RegEx用了1216.719ms,而我的算法只用了244.125ms.
原文见/dotnet/20111127/315432.html,良多网站都转载了。
更新:新增一个BitArray,用于判别某char是不是在一切脏字中呈现过。总工夫由244ms降到了34ms.
次要算法如代码所示
privatestaticDictionarydic=newDictionary();
privatestaticBitArrayfastcheck=newBitArray(char.MaxValue);
staticvoidPrepare()
{
string[]badwords=
//readfromfile
foreach(stringwordinbadwords)
{
if(!dic.ContainsKey(word))
{
dic.Add(word,null);
maxlength=Math.Max(maxlength,word.Length);
fastcheck[word[0]]=true;
}
}
}
利用的时分- intindex=0;while(index<target.Length){if(!fastcheck[target[index]]){while(index<target.Length-1&&!fastcheck[target[++index]]);}for(intj=0;j<Math.Min(maxlength,target.Length-index);j++){stringsub=target.Substring(index,j);if(dic.ContainsKey(sub)){sb.Replace(sub,"***",index,j);index+=j;break;}}index++;}
复制代码 有专家说:net网页编程不是跨平台,net网页编程就是平台,这很好的定义了net网页编程的特点。有了net网页编程,你只需要等待net网页编程平台在新平台上移植。这还不错吧!只是,net网页编程不是一个平台,而是多个平台。你需要在这个net网页编程平台移植到另一个net网页编程平台。 |
|