Этот простой фрагмент кода C #, предназначенный для поиска блоков сценариев в HTML, занимает 0,5 секунды для запуска в строке 74 КБ, содержащей всего 9 блоков сценария. Это бинарный выпуск без ошибок на процессоре i7 с тактовой частотой 2,8 ГГц. Я сделал несколько прогонов этого кода, чтобы убедиться, что JIT не препятствует производительности. Нет.
Это профиль клиента VS2010 .NET 4.0. x64
Почему это так медленно?
int[] _exclStart = new int[100];
int[] _exclStop = new int[100];
int _excl = 0;
for (int f = input.IndexOf("<script", 0); f != -1; )
{
_exclStart[_excl] = f;
f = input.IndexOf("</script", f + 8);
if (f == -1)
{
_exclStop[_excl] = input.Length;
break;
}
_exclStop[_excl] = f;
f = input.IndexOf("<script", f + 8);
++_excl;
}