﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>博客园-用心走好每一步-最新评论</title><link>http://www.cnblogs.com/IT-man/CommentsRSS.aspx</link><description /><language>zh-cn</language><pubDate>Thu, 15 Apr 2010 18:28:09 GMT</pubDate><lastBuildDate>Thu, 15 Apr 2010 18:28:09 GMT</lastBuildDate><generator>cnblogs</generator><item><title>Re:期待的Silverlight4正式版终于发布了.....</title><link>http://www.cnblogs.com/IT-man/archive/2010/04/16/1713160.html#1802936</link><dc:creator>辰</dc:creator><author>辰</author><pubDate>Thu, 15 Apr 2010 20:22:31 GMT</pubDate><guid>http://www.cnblogs.com/IT-man/archive/2010/04/16/1713160.html#1802936</guid><description><![CDATA[貌似SL4不支持Chrome。安装插件的时候说不支持。<br><br><div align=right><a style="text-decoration:none;" href="http://www.cnblogs.com/IT-man/" target="_blank">辰</a> 2010-04-16 04:22 <a href="http://www.cnblogs.com/IT-man/archive/2010/04/16/1713160.html#1802936#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Re:关于字符串内范围截取的一点方法总结</title><link>http://www.cnblogs.com/IT-man/archive/2010/03/01/1674717.html#1771042</link><dc:creator>小妮爹</dc:creator><author>小妮爹</author><pubDate>Sun, 28 Feb 2010 16:38:19 GMT</pubDate><guid>http://www.cnblogs.com/IT-man/archive/2010/03/01/1674717.html#1771042</guid><description><![CDATA[        private static string BuildInput()
        {
            StringBuilder sb = new StringBuilder();
            sb.Append(&quot;&gt;&quot;);
            for (int i = 0; i &lt; 100000; i++)
            {
                sb.Append(&quot;Hello, this is some text ...&quot;);
                sb.Append(&quot;&lt;param&quot; + i + &quot;&gt;&quot;);
                sb.Append(&quot;this is some text...&quot;);


            }
            sb.Append(&quot;&lt;&quot;);
            return sb.ToString();
        }


           string t = BuildInput();
           string[] tt = Regex.Replace(t, @&quot;&gt;.*&lt;&quot;, &quot; &quot;,RegexOptions.Compiled).Split(' ');<br><br><div align=right><a style="text-decoration:none;" href="http://www.cnblogs.com/IT-man/" target="_blank">小妮爹</a> 2010-03-01 00:38 <a href="http://www.cnblogs.com/IT-man/archive/2010/03/01/1674717.html#1771042#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Re:关于字符串内范围截取的一点方法总结</title><link>http://www.cnblogs.com/IT-man/archive/2010/02/28/1674717.html#1770983</link><dc:creator>Ivony...</dc:creator><author>Ivony...</author><pubDate>Sun, 28 Feb 2010 13:16:01 GMT</pubDate><guid>http://www.cnblogs.com/IT-man/archive/2010/02/28/1674717.html#1770983</guid><description><![CDATA[LastIndexOf，唔，，，，莫非在反向搜索，这的确是正则的硬伤，明天测一下就知道了。<br><br><div align=right><a style="text-decoration:none;" href="http://www.cnblogs.com/IT-man/" target="_blank">Ivony...</a> 2010-02-28 21:16 <a href="http://www.cnblogs.com/IT-man/archive/2010/02/28/1674717.html#1770983#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Re:关于字符串内范围截取的一点方法总结</title><link>http://www.cnblogs.com/IT-man/archive/2010/02/28/1674717.html#1770966</link><dc:creator>Symas2009</dc:creator><author>Symas2009</author><pubDate>Sun, 28 Feb 2010 12:11:20 GMT</pubDate><guid>http://www.cnblogs.com/IT-man/archive/2010/02/28/1674717.html#1770966</guid><description><![CDATA[@Ivony...
编译的Regex效率确实会高些，但是你给的代码的结果也是平均一次五百多ms，而且结果其实是不对的。我给的那个Analyzer类，时间复杂度已经是O(n)了，n为输入串长度，平均一次四五十ms，我真的很难相信正则匹配可以达到O(n)的效率...<br><br><div align=right><a style="text-decoration:none;" href="http://www.cnblogs.com/IT-man/" target="_blank">Symas2009</a> 2010-02-28 20:11 <a href="http://www.cnblogs.com/IT-man/archive/2010/02/28/1674717.html#1770966#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Re:关于字符串内范围截取的一点方法总结</title><link>http://www.cnblogs.com/IT-man/archive/2010/02/28/1674717.html#1770864</link><dc:creator>Ivony...</dc:creator><author>Ivony...</author><pubDate>Sun, 28 Feb 2010 06:10:28 GMT</pubDate><guid>http://www.cnblogs.com/IT-man/archive/2010/02/28/1674717.html#1770864</guid><description><![CDATA[正则的确应该更高效，但应该使用Regex对象而不是静态方法。

[code=csharp]

Regex matchRegex = new Regex( &quot;&lt;(?&lt;result&gt;.*)&gt;&quot;, RegexOptions.Compiled );
Regex splitRegex = new Regex( &quot;,&quot; , RegexOptions.Compiled)

string str=&quot;dfsdg&lt;2434&gt;,dgdfg&lt;35346&gt;,dtr35&lt;3w543&gt;&quot;;


string[] results = 
  (
  from item in spiltRegex.Split( str )
  select matchReegx.Match( item ).Groups[&quot;result&quot;].Value
  ).ToArray();
[/code]<br><br><div align=right><a style="text-decoration:none;" href="http://www.cnblogs.com/IT-man/" target="_blank">Ivony...</a> 2010-02-28 14:10 <a href="http://www.cnblogs.com/IT-man/archive/2010/02/28/1674717.html#1770864#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Re:关于字符串内范围截取的一点方法总结</title><link>http://www.cnblogs.com/IT-man/archive/2010/02/28/1674717.html#1770847</link><dc:creator>zzfds</dc:creator><author>zzfds</author><pubDate>Sun, 28 Feb 2010 04:41:19 GMT</pubDate><guid>http://www.cnblogs.com/IT-man/archive/2010/02/28/1674717.html#1770847</guid><description><![CDATA[顶个<br><br><div align=right><a style="text-decoration:none;" href="http://www.cnblogs.com/IT-man/" target="_blank">zzfds</a> 2010-02-28 12:41 <a href="http://www.cnblogs.com/IT-man/archive/2010/02/28/1674717.html#1770847#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Re:关于字符串内范围截取的一点方法总结</title><link>http://www.cnblogs.com/IT-man/archive/2010/02/28/1674717.html#1770835</link><dc:creator>Symas2009</dc:creator><author>Symas2009</author><pubDate>Sun, 28 Feb 2010 04:06:22 GMT</pubDate><guid>http://www.cnblogs.com/IT-man/archive/2010/02/28/1674717.html#1770835</guid><description><![CDATA[测试应该是公平的，因为在我的Analyzer中我也同样把10W数据加到了List&lt;string&gt;中。
额，不过我的代码也有些问题了，我的_lexemeStart应该放到方法中作为局部变量才对，当然，这对结果影响不大。

我感觉在大字符串情况下用Regex的速度比我上面的代码慢是必然的，因为我的代码只能处理特定领域中的问题（以&lt;开头，&gt;结尾），而正则引擎则可以处理通用的模式匹配问题，因为通用，自然就会损失一定效率，所以我感觉这应该不能算是.net的问题。

PS: 其实就是讨论而已嘛，我本意也不是要分个高下额，只不过我第一条回复把客套话给省了，My bad。:-)
更何况我其实很菜，只是偶尔的一两次幸运点，碰到自个儿弄过的东西，会稍占点上风:)<br><br><div align=right><a style="text-decoration:none;" href="http://www.cnblogs.com/IT-man/" target="_blank">Symas2009</a> 2010-02-28 12:06 <a href="http://www.cnblogs.com/IT-man/archive/2010/02/28/1674717.html#1770835#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Re:关于字符串内范围截取的一点方法总结</title><link>http://www.cnblogs.com/IT-man/archive/2010/02/28/1674717.html#1770809</link><dc:creator>yanxy</dc:creator><author>yanxy</author><pubDate>Sun, 28 Feb 2010 01:54:21 GMT</pubDate><guid>http://www.cnblogs.com/IT-man/archive/2010/02/28/1674717.html#1770809</guid><description><![CDATA[[quote]Symas2009[/quote]
为这个问题我还专门跑回了单位。修改代码后我测试了一下，在我的机器上结果如下：
Regex
        Time Elapsed:           17,629ms
        Time Elapsed (one time):352ms
        CPU time:               17,109,375,000ns
        CPU time (one time):    342,187,500ns
        Gen 0:                  125
        Gen 1:                  75
        Gen 2:                  18

MyAnalyzer
        Time Elapsed:           3,375ms
        Time Elapsed (one time):67ms
        CPU time:               3,281,250,000ns
        CPU time (one time):    65,625,000ns
        Gen 0:                  41
        Gen 1:                  21
        Gen 2:                  7

虽然修改后速度提高了很多，但还是比String慢5倍左右。兄弟我甘拜下风！言语冒犯之处还请多担待！

<br><br><div align=right><a style="text-decoration:none;" href="http://www.cnblogs.com/IT-man/" target="_blank">yanxy</a> 2010-02-28 09:54 <a href="http://www.cnblogs.com/IT-man/archive/2010/02/28/1674717.html#1770809#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Re:关于字符串内范围截取的一点方法总结</title><link>http://www.cnblogs.com/IT-man/archive/2010/02/28/1674717.html#1770799</link><dc:creator>2Symas2009</dc:creator><author>2Symas2009</author><pubDate>Sun, 28 Feb 2010 00:58:17 GMT</pubDate><guid>http://www.cnblogs.com/IT-man/archive/2010/02/28/1674717.html#1770799</guid><description><![CDATA[[quote]Symas2009：
平均时间：47ms
平均时间：1645ms
[/quote]
正则可能会比String慢一些，不过要是.net的Regex真实现的这样差，只能说微软的人都是吃闲饭的了。
我无话可说<br><br><div align=right><a style="text-decoration:none;" href="http://www.cnblogs.com/IT-man/" target="_blank">2Symas2009</a> 2010-02-28 08:58 <a href="http://www.cnblogs.com/IT-man/archive/2010/02/28/1674717.html#1770799#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Re:关于字符串内范围截取的一点方法总结</title><link>http://www.cnblogs.com/IT-man/archive/2010/02/28/1674717.html#1770797</link><dc:creator>2Symas2009</dc:creator><author>2Symas2009</author><pubDate>Sun, 28 Feb 2010 00:55:32 GMT</pubDate><guid>http://www.cnblogs.com/IT-man/archive/2010/02/28/1674717.html#1770797</guid><description><![CDATA[[quote]Symas2009：
PS: 那个正则模式~~[/quote]
这个的确是没考虑周全。不过你把MatchCollection的10万个元素弄到List里，然后再跟我比效率，你觉得合适吗?建议重写。

最后，匿名用户不能粘代码。<br><br><div align=right><a style="text-decoration:none;" href="http://www.cnblogs.com/IT-man/" target="_blank">2Symas2009</a> 2010-02-28 08:55 <a href="http://www.cnblogs.com/IT-man/archive/2010/02/28/1674717.html#1770797#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>
