Internet Explorer 9: хорошие тесты - результат обмана или ошибки

Internet Explorer 9: хорошие тесты - результат обмана или ошибки

С большой вероятностью Internet Explorer 9 нечестен при прохождении тестов на производительность. Как показал анализ Hacker News, поведение IE9 в тесте SunSpider (используется для анализа быстродействия при обработке JavaScript) трудно объяснить чем-то кроме намеренной или ненамеренной оптимизации браузера специально для этого теста.

С большой вероятностью Internet Explorer 9 нечестен при прохождении тестов на производительность. Как показал анализ Hacker News, поведение IE9 в тесте SunSpider (используется для анализа быстродействия при обработке JavaScript) трудно объяснить чем-то кроме намеренной или ненамеренной оптимизации браузера специально для этого теста.

Одна из составляющих комплексного теста SunSpider - cordic - проходится IE существенно (в 10 раз) быстрее, чем другими браузерами. Это вызвало подозрения у исследователей, и подозрения оказались не напрасными. При включении в код теста операторов, которые никак не должны были влиять на его выполнение, IE9 стал работать на нем медленнее, причем не на несколько процентов, а более чем на порядок. Выигрывая на оригинальном тесте у Google Chrome и Opera в 7-9 раз, после изменений он стал проигрывать в 2-3 раза.

Существует два возможных объяснения таких результатов. Первое - это случайная или намеренная оптимизация работы браузера конкретно под SunSpider. Случайная оптимизация возможна в том случае, если внутри компании эти тесты использовались в процессе разработки для оценки качества результата.

Вторая возможность - и именно так объяснили произошедшее в Microsoft - это работа модуля, исключающего бесполезный код. Этот модуль в javascript-движке IE занимается тем, что анализирует код и отказывается от выполнения той части, которая не продуцирует никаких результатов. Весь тест cordic по своей сути и являлся таким кодом, поскольку многократно запускаемая в нем функция, ничего не возвращала, значений никаких глобальных переменных не меняла и пользовательского вывода не имела. Внесенные изменения «запутали» анализатор (хотя по крайней мере одно из них не должно было этого сделать). Если так (а эта версия выглядит даже более вероятной), это не отменяет искусственности результатов IE9 в тесте: анализатор «пустого» кода, работающий столь нестабильно в практических приложениях, следует считать неработающим вовсе.

Если вам нравится играть в опасную игру, присоединитесь к нам - мы научим вас правилам!

Подписаться