c# 中字符串搜索 indexof 与 正则表达式效率比较
来源:互联网 发布:ise软件下载几个 编辑:程序博客网 时间:2024/06/04 20:13
public void 性能测试() { string res = "<?xml version=\"1.0\" encoding=\"utf-16\"?>\r\n<xxxMsg xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">\r\n <Message>10</Message>\r\n <Time>2014-04-30T15:26:15.3256946+08:00</Time>\r\n <SyncPointTagName>ddddd</SyncPointTagName>\r\n <TerminalCode>50001334</TerminalCode>\r\n</xxxMsg>"; //100万次计算 var arr = System.Linq.Enumerable.Range(1, 1000000); //方法1 Action act = () => { foreach (var k in arr) { forFun(res); } }; //方法2 Action act2 = () => { foreach (var k in arr) { forRegx(res); } }; //fro 用时7860 System.Diagnostics.Debug.WriteLine("fro 用时" + Stopwatch(act)); //regx 用时1056 System.Diagnostics.Debug.WriteLine("regx 用时" + Stopwatch(act2)); } /// <summary> /// 用for查找 /// </summary> /// <param name="res"></param> protected void forFun(string res) { //这东西写到外部,效率应该会高一点点 string msg = string.Empty; string tag = "<Message>"; int startindex =res.IndexOf(tag) + tag.Length; int endindex = -1; for (int k = startindex; k < res.Length; k++) { char curchar = res[k]; if (curchar >= 48 && curchar <= 57) { endindex = k;//这里还可以用msg+=curchar ;
} else { break; } } msg = res.Substring(startindex, endindex - startindex); } /// <summary> /// 正则查找 /// </summary> /// <param name="res"></param> protected void forRegx(string res) { //这东西写到外部,效率应该会高一点点 string msg = string.Empty; string tag = "<Message>"; msg = System.Text.RegularExpressions.Regex.Match(res, tag + "\\d{1,}").Value; } /// <summary> /// 测试运行时间 /// </summary> /// <param name="method">需要执行的方法</param> /// <param name="summary">对方法的说明</param> /// <returns>返回,这个方法执行用了多少毫秒</returns> public static long Stopwatch(Action method) { System.Diagnostics.Stopwatch watch = new System.Diagnostics.Stopwatch(); watch.Restart(); //运行方法 method.Invoke(); watch.Stop(); return watch.ElapsedMilliseconds; } /// <summary> /// 测试运行时间 /// </summary> /// <param name="method">需要执行的方法</param> /// <param name="obj">参数对像</param> /// <returns>返回,这个方法执行用了多少毫秒</returns> public static long Stopwatch<T>(Action<T> method, T obj) { return Stopwatch(new Action(() => { method.Invoke(obj); })); }可以看到,,,,使用正则表达式的结果需要10秒左右,而使用indexof 的搜索只需要7秒多.
0 0
- c# 中字符串搜索 indexof 与 正则表达式效率比较
- C#中string.contains和string.indexof的效率比较
- C#中利用正则表达式实现字符串搜索
- C#中利用正则表达式实现字符串搜索
- C#中利用正则表达式实现字符串搜索
- C#中利用正则表达式实现字符串搜索
- C#中利用正则表达式实现字符串搜索
- C#中利用正则表达式实现字符串搜索
- C#中利用正则表达式实现字符串搜索
- C#中利用正则表达式实现字符串搜索
- C#中利用正则表达式实现字符串搜索
- C#中利用正则表达式实现字符串搜索
- C#中利用正则表达式实现字符串搜索
- C#中利用正则表达式实现字符串搜索
- C#中利用正则表达式实现字符串搜索
- C#中利用正则表达式实现字符串搜索
- C#中利用正则表达式实现字符串搜索
- C#中利用正则表达式实现字符串搜索
- 编写的windows程序,崩溃时产生crash dump文件的办法 .
- 用例图
- MASM32开发COM组件【二】
- 新特征-阻塞栈
- cuda-convnet的vs和python 联合 调试
- c# 中字符串搜索 indexof 与 正则表达式效率比较
- 深入解析:分布式系统的事务处理经典问题及模型(转载分享)
- 新特征-锁(上)
- Archiva can not download file from other resources
- 对于Linux中errno使用的问题
- 再选择一项将来值得追求的方向
- ABAP--如何创建自定义打印条码
- update-apt-xapian-index在 ubuntu中占用的CPU过高
- MASM32开发COM组件【一】