Я объясню свою проблему (извините за плохой английский), у меня есть .NET exe, в котором очень важны каждая миллисекунда обработки.
Эта программа выполняет множество сравнений строк (в основном это string1.IndexOf (string2, StringComparison.OrdinalIgnoreCase)
).
Когда я переключаюсь на платформу 4, время моей программы вдвое больше, чем раньше.
Я искал объяснение и обнаружил, что функция IndexOf (s, OrdinalIgnoreCase)
намного медленнее в структуре 4 (я тестировал с помощью простого консольного приложения, и в цикле время составляло 30 мс за 3,5 и 210 мс в 4.0 ???). Но сравнение в текущей культуре происходит быстрее в рамках 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();
Мои вопросы:
Кто-нибудь заметил ту же проблему ?
У кого-нибудь есть объяснение по поводу этого изменения?
Есть ли способ обойти проблему?
Спасибо.