测试在长度为 403 的字符串中查找,特意匹配最后几个字符:
string a = ""; for (int i = 0; i < 100; i++) { a += "aBcD"; } a += "xYz"; string b = "xyz"; // 特意匹配最后几个字符 Stopwatch sw1 = Stopwatch.StartNew(); bool? r1 = null; for (int i = 0; i < 10000; i++) { r1 = a.IndexOf(b) >= 0; } sw1.Stop(); Stopwatch sw2 = Stopwatch.StartNew(); bool? r2 = null; for (int i = 0; i < 10000; i++) { r2 = a.Contains(b); } sw2.Stop(); Stopwatch sw3 = Stopwatch.StartNew(); bool? r3 = null; for (int i = 0; i < 10000; i++) { r3 = a.ToUpper().Contains(b.ToUpper()); } sw3.Stop(); Stopwatch sw4 = Stopwatch.StartNew(); bool? r4 = null; for (int i = 0; i < 10000; i++) { r4 = a.ToLower().Contains(b.ToLower()); } sw4.Stop(); Stopwatch sw5 = Stopwatch.StartNew(); bool? r5 = null; for (int i = 0; i < 10000; i++) { r5 = a.Contains(b, StringComparison.OrdinalIgnoreCase); } sw5.Stop(); Stopwatch sw6 = Stopwatch.StartNew(); bool? r6 = null; for (int i = 0; i < 10000; i++) { r6 = a.Contains(b, StringComparison.CurrentCultureIgnoreCase); } sw6.Stop(); Stopwatch sw7 = Stopwatch.StartNew(); bool? r7 = null; for (int i = 0; i < 10000; i++) { r7 = Regex.IsMatch(a, b); } sw7.Stop(); Stopwatch sw8 = Stopwatch.StartNew(); bool? r8 = null; for (int i = 0; i < 10000; i++) { r8 = Regex.IsMatch(a, b, RegexOptions.IgnoreCase); } sw8.Stop(); return Json(new { IndexOf_________________ = sw1.Elapsed + " " + r1, Contains________________ = sw2.Elapsed + " " + r2, ToUpper_________________ = sw3.Elapsed + " " + r3, ToLower_________________ = sw4.Elapsed + " " + r4, OrdinalIgnoreCase_______ = sw5.Elapsed + " " + r5, CurrentCultureIgnoreCase = sw6.Elapsed + " " + r6, IsMatch_________________ = sw7.Elapsed + " " + r7, IsMatchIgnoreCase_______ = sw8.Elapsed + " " + r8, });
结果参考:
{ "indexOf_________________": "00:00:00.1455812 False", "contains________________": "00:00:00.0003791 False", "toUpper_________________": "00:00:00.0038182 True", "toLower_________________": "00:00:00.0026113 True", "ordinalIgnoreCase_______": "00:00:00.0096550 True", "currentCultureIgnoreCase": "00:00:00.1596517 True", "isMatch_________________": "00:00:00.0053627 False", "isMatchIgnoreCase_______": "00:00:00.0084132 True" }