Новый оптимизатор Internet Explorer 9 привел к завышению результатов теста SunSpider
Значительный прорыв производительности последней тестовой версии Internet Explorer 9 дал повод задуматься, каким образом разработчикам IE удалось кардинально поднять производительность браузера, переведя его из разряда отстающих в лидеры.Как оказалось, в последней тестовой версии была реализована техника оптимизации "Dead Code Elimination", основной задачей которой в данный момент является ускорение прохождения теста производительности SunSpider.
По сути оптимизация сводится к игнорированию определенных языковых конструкций, что пока влияет только на прохождение теста SunSpider, не ускоряя работу реальных сайтов. При этом даже незначительное изменение кода теста, приводит к значительному падению скорости его прохождения. Например, оптимизация уже перестает работать при замене переменных местами в условном выражении (т.е. если вместо "if (TargetAngle > CurrAngle)" написать "if (TargetAngle <= CurrAngle)"), при добавлении новой переменной или при изменении огранизации цикла (если вместо "for (Step = 0; Step < 12; Step++)" поставить "while(Step < 12)" или "for (Step = 12; Step > 0; Step--)").
Интересно, что добавление в код теста забытого "return" в конце функции приводит к замедлению работы IE в 20 раз (!), а подстановка в любое место кода пустого вызова "true" замедляет IE в 19 раз (!). Opera, Chrome и Firefox также были протестированы на предмет выборочной оптимизации тестов, но изменение кода SunSpider для данных браузеров не привело к изменению скорости прохождения теста.
Дополнение: представители Microsoft прокомментировали ситуацию тем, что в новой тестовой версии IE включена начальная поддержка нового механизма оптимизации, который пока нигде не применяется, но в течение нескольких недель будет адаптирован для ускорения реальных сайтов. Невероятное ускорение прохождения теста SunSpider объясняется тем, что в нем выполняются интенсивные типовые цикличные операции, после чего результаты данных вычислений в дальнейшем нигде не используются. Подобное синтетическое поведение теста как раз подпадает под действие нового оптимизатора, который как раз нацелен на удаление подобных вычислений, не приводящих к результату. О причинах сведения оптимизации на нет после добавления несущественных изменений в код SunSpider ничего не сказано.
Здравствуйте, Sheridan, Вы писали:
S>Комментарии? Опровержения?
Вроде уже прокомментировали. Ситуация такова, что каждый воспринимает ее, как больше нравится. Лично я скачал бету и попробую посидеть на ней с недельку другую, а уже потом решу, лучше она Хрома или нет. Что там показывает SunSpider, мне пофигу.
Приветствую, MxMsk, вы писали:
MM> Вроде уже прокомментировали. Ситуация такова, что каждый воспринимает ее, как больше нравится. Лично я скачал бету и попробую посидеть на ней с недельку другую, а уже потом решу, лучше она Хрома или нет. Что там показывает SunSpider, мне пофигу.
Что показывает спайдер — мне тоже пофигу. Но вот что вскрывает сама ситуация — уже веселее
Здравствуйте, Sheridan, Вы писали:
S>Комментарии?
— статья (или перевод?) ламерская
— тест говно (очевидно! мы даже тут в КСВ такие тесты на плюсах обсуждали, когда получалось "время — 0.0с"), несмываемый позор тестописателям
— оптимизатор в IE9 ещё развивать и развивать. но направление правильное, авось тесты научатся нормальные писать.
Здравствуйте, Sheridan, Вы писали:
MM>> Вроде уже прокомментировали. Ситуация такова, что каждый воспринимает ее, как больше нравится. Лично я скачал бету и попробую посидеть на ней с недельку другую, а уже потом решу, лучше она Хрома или нет. Что там показывает SunSpider, мне пофигу. S>Что показывает спайдер — мне тоже пофигу. Но вот что вскрывает сама ситуация — уже веселее
статья вскрывает исключительно никчёмность очень популярного теста
Здравствуйте, Sheridan, Вы писали:
A>> — оптимизатор в IE9 ещё развивать и развивать. но направление правильное, авось тесты научатся нормальные писать. S>Мне показалось или ты хотел сказать, что хаки применять (читай: обманывать) — хорошо?
мне показалось, или ты разбираешься в оптимизации еще меньше Дворкина?
Здравствуйте, Sheridan, Вы писали:
S>Комментарии? Опровержения?
Вас это беспокоит? Его движок летает "как трофейный мессершмидт" (с) по сравнению с прошлыми версиями. С V8 конечно и рядом не стоял, но прорыв налицо. А то, что его распознаватель сбить легко, так давеча была статья-перевод на хабре, описывающая задачу распознавания метрвого кода и ее реализацию в IE. Оттуда даже линуксоиду будет понятно, что сия весьма нетривиально и на любой чих будет сбиваться, хоть то тест, хоть продуктивный код.
И если оптимизатор IE был заточен именно на тесты, какого ж хрена он тогда на нормальных скриптах так летает? Попутался и за тесты принял?
Здравствуйте, kochetkov.vladimir, Вы писали:
KV>Вас это беспокоит? Его движок летает "как трофейный мессершмидт" (с) по сравнению с прошлыми версиями. С V8 конечно и рядом не стоял, но прорыв налицо. А то, что его распознаватель сбить легко, так давеча была статья-перевод на хабре, описывающая задачу распознавания метрвого кода и ее реализацию в IE.
а можно ссылку на реализацию? я читал на хабре что-то, но не помню что там была описана конкретная реализация в IE9 — они сами там в MS что-ли описали?
KV>Оттуда даже линуксоиду будет понятно, что сия весьма нетривиально и на любой чих будет сбиваться, хоть то тест, хоть продуктивный код.
ну не на любой чих, а на вполне конкретные безотносительно реализации, я могу предположить почему он сбился именно на описанные в первом сообщении чихи (и кстати, абсолютно уверен, что хоть они и выглядят безобидно, выбраны не случайно и "со знанием дела")
Здравствуйте, Sheridan, Вы писали:
A>> мне показалось, или ты разбираешься в оптимизации еще меньше Дворкина? S>Я слушаю.
я повторяю — тест кривой, DCE не является хаком — это общеизвестная оптимизация
A> я повторяю — тест кривой, DCE не является хаком — это общеизвестная оптимизация
Гм... Тогда интересно — отчего при небольшом изменении кода внезапно оптимизация кудато пропадает?
Здравствуйте, Sheridan, Вы писали:
A>> я повторяю — тест кривой, DCE не является хаком — это общеизвестная оптимизация S>Гм... Тогда интересно — отчего при небольшом изменении кода внезапно оптимизация кудато пропадает?
особенность реализации (возможно самого DCE, возможно каких-то других потрохов JS в IE9) — я надеюсь, Кочетков поделится ссылочкой — не поделится, так я попытаюсь высказать свои неподкреплённые предположения
оптимизация-то внешне нехитрая — код "мёртвый" — выкидываем, не мёртвый — код отрабатывает. дьявол в принятии решения о том, является ли этот код мёртвым. кода там много (по времени выполнения) выкидывается (или не выкидывается) — вот и эффект "внезапности". а про изменения я уже сказал — там не случайные изменения выбраны, наверняка автор имел опыт тестирования какого-либо оптимизатора и знал, "куда бить".
А может это не IE проблемы, а тех кто криво пишет. Я конечно не знаю как там с открытой документацией, но если сказать что писать нужно так, а мегаумный програмист написал так что все тормозит и на вопросы отвечает — а нефиг, используйте "Х"-браузер, то это проблемы его, програмиста?
ЗЫ Не пытаюсь защищать ИЕ просто постановка странная.
Самая большая в мире ложь — "Я прочел и согласен с условиями пользовательского соглашения".
А чего, там комментировать, всё ж понятно: при настройке эвристики оптимизатора ориентировались не на миллион случайных сайтов, а на определённые тесты. И таки да, успешно сумели их оптимизировать — уже немалый прогресс.
А что обобщили результаты теста на всё остальное и стали делать поспешные выводы — ну так это, скорее, вина их пиарщиков и менеджеров, а не слабость технологии.
ЗЫ. Субъективно движок IE9 существенно уступает по скорости как Хрому, так и Опере, что бы тут не говорили.
Курица — это инструмент, с помощью которого одно яйцо производит другие.
Здравствуйте, frogkiller, Вы писали:
F>ЗЫ. Субъективно движок IE9 существенно уступает по скорости как Хрому, так и Опере, что бы тут не говорили.
Мне пока кажется, что IE9 уступает не столько движком, сколько отзывчивостью интерфейса. Медленее работают такие функции, как "Открыть в новой вкладке". В Хроме зажимаешь Ctrl и пошел по ссылкам щелкать, в IE9 же на третьей-четвертой ссылке начинаются тормоза GUI, приходится немного ждать. Такое ощущение, что это просто какое-то хроническое заболевание IE.
Здравствуйте, Sheridan, Вы писали:
MM>> Вроде уже прокомментировали. Ситуация такова, что каждый воспринимает ее, как больше нравится. Лично я скачал бету и попробую посидеть на ней с недельку другую, а уже потом решу, лучше она Хрома или нет. Что там показывает SunSpider, мне пофигу.
S>Что показывает спайдер — мне тоже пофигу. Но вот что вскрывает сама ситуация — уже веселее
И что вскрыла ситуация ? Что в бете оптимизатор никакой и справляется пока только с синтетикой ?
Здравствуйте, Sheridan, Вы писали:
A>> — оптимизатор в IE9 ещё развивать и развивать. но направление правильное, авось тесты научатся нормальные писать.
S>Мне показалось или ты хотел сказать, что хаки применять (читай: обманывать) — хорошо?
Где ты углядел обман ?
Ты хотел что бы за полгода до релиза челы выпустили бету в которой будет все как в релизе а то и лучше ?
Здравствуйте, Sheridan, Вы писали:
A>> я повторяю — тест кривой, DCE не является хаком — это общеизвестная оптимизация S>Гм... Тогда интересно — отчего при небольшом изменении кода внезапно оптимизация кудато пропадает?