string.IndexOf performance

Этот простой фрагмент кода 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;
                }
6
задан Ghostrider 28 October 2011 в 23:40
поделиться