Comparação de strings no dotnet framework 4

Vou explicar meu problema (desculpe meu inglês ruim), tenho um exe .NET em que todos os milissegundos de processamento são muito importantes.

Este programa faz muitas comparações de strings (a maioria éstring1.IndexOf(string2, StringComparison.OrdinalIgnoreCase))

Quando mudo para a estrutura 4, o tempo do meu programa é duas vezes maior do que antes.

Procurei explicações e descobri que a funçãoIndexOf(s, OrdinalIgnoreCase) é muito mais lento no framework 4 (eu testei com um aplicativo de console simples e, em um loop, o tempo foi de 30ms em 3,5 e 210ms em 4,0 ???). Mas a comparação na cultura atual é mais rápida na estrutura 4 do que na 3.5.

Aqui está um exemplo de código que eu uso:

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();

Minhas perguntas são:

Alguém já reparou no mesmo problema?

Alguém tem uma explicação sobre essa mudança?

Existe uma solução para contornar o problema?

Obrigado.

questionAnswers(3)

yourAnswerToTheQuestion