The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Разработчики Internet Explorer 9 уличены в накрутке результа..., opennews (?), 20-Ноя-10, (0) [смотреть все] +1

Сообщения [Сортировка по времени | RSS]


69. "Разработчики Internet Explorer 9 уличены в накрутке результа..."  +/
Сообщение от vkni (?), 20-Ноя-10, 20:17 
> молодцы , интересно что они еще придумают в другой раз ?

Ваши любимые компиляторы gcc умеют делать подобные оптимизации с чёрт знает какой версии. Может быть просто не в таком мощном объёме.

Поэтому сама оптимизация DCE - дело прекрасное и нужное. Конечно, реализация убогая.

Почему так получилось - думаю, что просто народ, который кодировал DCE в IE, ориентировался на этот тест. И, как обычно, считал, что УМВР и ладушки :-).

А был подлог или нет со стороны МС, можно узнать только раскопав, как же аннонсировалась эта фича. Было ли это заявлено, как "термоядерное ускорение JS" или как DCE. Если как DCE, то подлога нет - просто реализовано мастером http://caricatura.ru/top/best/url/parad/oleg_docjak/6050/ . :-)

-------------------
Что надо делать -  это исправлять тест, так чтобы DCE не мешало; делать специальные тесты на DCE; исправлять DCE в IE. Я думаю, так всё и произойдёт.

Ответить | Правка | К родителю #27 | Наверх | Cообщить модератору

71. "Разработчики Internet Explorer 9 уличены в накрутке результа..."  +/
Сообщение от Аноним (-), 20-Ноя-10, 21:02 
>> молодцы , интересно что они еще придумают в другой раз ?
> Ваши любимые компиляторы gcc умеют делать подобные оптимизации с чёрт знает какой
> версии. Может быть просто не в таком мощном объёме.

GCC умеет это делать для языка Си. В блоге мозилловцев ясно показано, почему это будет приводить к нескончаемым проблемам в JavaScript:

  function func(a, b) {
        var x;
        var i = 300;
        while (i--) {
            x = a + b; // dead store
        }
    }

Вроде цикл можно пропустить, так как очевидно, что x = a + b можно вынести вне цикла.
А теперь, но все меняется если вызвать функцию например так:

func(1, { valueOf: function() { alert("Hi Dean!"); return 2; } });

Ответить | Правка | Наверх | Cообщить модератору

72. "Разработчики Internet Explorer 9 уличены в накрутке результа..."  +1 +/
Сообщение от vkni (?), 20-Ноя-10, 21:15 
> GCC умеет это делать для языка Си. В блоге мозилловцев ясно показано, почему это будет приводить к нескончаемым проблемам в JavaScript:

В языке С оптимизации тоже приводят к "нескончаемым проблемам". :-( Поэтому-то они и вводятся очень осторожно - см., к примеру, чудесную монографию А. Фога - http://agner.org/optimize/optimizing_cpp.pdf

Но это не повод же совсем ничего не делать. Насколько я понимаю, IE - это первая команда, которая делает DCE. Верно?

Ответить | Правка | Наверх | Cообщить модератору

73. "Разработчики Internet Explorer 9 уличены в накрутке результа..."  +1 +/
Сообщение от Аноним (-), 20-Ноя-10, 21:28 
>IE - это первая команда, которая делает DCE. Верно?

Похоже они эту версию ради отмазки сочинили.
А оптимизацию под конкретные сайты Опера пыталась сделать.

Ответить | Правка | Наверх | Cообщить модератору

86. "Разработчики Internet Explorer 9 уличены в накрутке результа..."  +/
Сообщение от User294 (ok), 21-Ноя-10, 01:36 
> IE - это первая команда, которая делает DCE. Верно?

Ага, только вот избирательная оптимизация под sunspider выглядит как-то подозрительно.

Ответить | Правка | К родителю #72 | Наверх | Cообщить модератору

91. "Разработчики Internet Explorer 9 уличены в накрутке результа..."  +/
Сообщение от Vkni (?), 21-Ноя-10, 09:29 
>> IE - это первая команда, которая делает DCE. Верно?
> Ага, только вот избирательная оптимизация под sunspider выглядит как-то подозрительно.

Не сказал бы. Просто взяли первый попавшийся тест, на нём прогнали, получилось круто. Обрадовались и тут же показали. На других тестах не прогнали из-за лени, недостатка времени или ещё чего.

Взяли бы сначала другой тест, была бы избирательная оптимизация под него :-).

Тут же в комментариях умные товарищи говорят, что сильно неочевидно то, что DCE даст в результате больше времени, чем потратит на анализ. Поэтому разумно взять какой-нибудь модный тест и реализовать DCE "под него".

Пусть криво, но хотя бы оценить полезность DCE - точно ли время сэкономит? Или больше потратит?

Ответить | Правка | Наверх | Cообщить модератору

94. "Разработчики Internet Explorer 9 уличены в накрутке результа..."  +1 +/
Сообщение от тоже Анонимemail (ok), 21-Ноя-10, 10:03 
Если оптимизация идет не от общего к частному, а наоборот - это не оптимизация, а накрутка конкретных моментов и костыли.
DCE, в частности, должен делать АНАЛИЗ кода, а не поиск знакомых шаблонов. Да еще такой топорный, что это приводит к ошибкам в похожем коде.
Ответить | Правка | Наверх | Cообщить модератору

95. "Разработчики Internet Explorer 9 уличены в накрутке результа..."  +/
Сообщение от анн (?), 21-Ноя-10, 10:44 
>поиск знакомых шаблонов

тоже нормальная практика, особенно на регэксах

Ответить | Правка | Наверх | Cообщить модератору

83. "Разработчики Internet Explorer 9 уличены в накрутке результа..."  +/
Сообщение от pavlinux (ok), 21-Ноя-10, 00:01 
> В блоге мозилловцев ясно показано, почему это будет приводить
> к нескончаемым проблемам в JavaScript:

Ну если они себя считают умнее компилятора, тогда почему не юзают
volatile, restrict, #pragma GCC optimize ("O0"), и прочие феньки?!

>     while (i--) {
>            x = a + b; // dead store
>        }
>    }
> Вроде цикл можно пропустить, так как очевидно, что x = a + b можно вынести вне цикла.

Не всегда! Например в дривере нивиди "а" и "b", это указатели на TSC и RTC (часы) :)

> ... но все меняется если вызвать функцию например так:
> func(1, { valueOf: function() { alert("Hi Dean!"); return 2; } });

Вы язык не перепутали?

Хотя пофигу, в C оно всё равно один раз присвоится.


function func(a, b) {
        var x;
        var i = 300;
        while (i--) {
            x = a + b; // dead store
        }
  }

func(1, { valueOf: function() { alert("Hi Dean!"); return 2; } });

И будет равносильно:

x = 1;
y = (valueOf : function() { alert("Hi Dean!"); return 2; });

func(x, y);   :D

Ответить | Правка | К родителю #71 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру