小编baz*_*baz的帖子

dotnet框架中的字符串比较4

我将解释我的问题(借口我的英语不好),我有一个.NET exe,其中每毫秒的处理非常重要.

这个程序进行了大量的字符串比较(大部分是string1.IndexOf(string2, StringComparison.OrdinalIgnoreCase)).

当我切换到框架4时,我的程序时间是以前的两倍.

我搜索了解释,我发现IndexOf(s, OrdinalIgnoreCase)框架4 中的函数要慢得多(我用一个简单的控制台应用程序进行测试,在循环中时间为3.5毫秒30毫秒,4.0毫秒210毫秒).但是当前文化中的比较在框架4中比在3.5中更快.

这是我使用的代码示例:

int iMax = 100000;
String str  = "Mozilla/5.0+(Windows;+U;+Windows+NT+5.1;+fr;+rv:1.9.0.1)+Gecko/2008070208+Firefox/3.0.1";
Stopwatch sw = new Stopwatch();
sw.Start();
StringComparison s = StringComparison.OrdinalIgnoreCase;
for(int i = 1;i<iMax;i++)
{
    str.IndexOf("windows", s);
}
sw.Stop();
Console.WriteLine(sw.ElapsedMilliseconds);
Console.Read();
Run Code Online (Sandbox Code Playgroud)

我的问题是:

  1. 有没有人注意到同样的问题?

  2. 有人对此变化有解释吗?

  3. 有解决方案可以绕过这个问题吗?

谢谢.

string comparison performance .net-4.0 visual-studio

6
推荐指数
1
解决办法
1315
查看次数