Comparación de cadenas en dotnet framework 4

Explicaré mi problema (disculpe mi mal inglés), tengo un .NET exe en el que cada milisegundo de procesamiento es muy importante.

Este programa hace muchas comparaciones de cadenas (la mayor parte esstring1.IndexOf(string2, StringComparison.OrdinalIgnoreCase))

Cuando cambio al framework 4, el tiempo de mi programa es el doble que antes.

Busqué explicación y encontré que la funciónIndexOf(s, OrdinalIgnoreCase) es mucho más lento en el marco 4 (probé con una aplicación de consola simple y en un bucle el tiempo fue de 30 ms en 3.5 y 210 ms en 4.0 ???). Pero la comparación en la cultura actual es más rápida en el marco 4 que en 3.5.

Aquí hay una muestra de código que 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();

Mis preguntas son:

¿Alguien ha notado el mismo problema?

Alguien tiene una explicación sobre este cambio?

¿Hay alguna solución para evitar el problema?

Gracias.

Respuestas a la pregunta(3)

Su respuesta a la pregunta