Значительный прорыв производительности последней тестовой версии 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 ничего не сказано.
URL: http://digitizor.com/2010/11/17/internet-explorer-9-caught-c.../
Новость: http://www.opennet.me/opennews/art.shtml?num=28717
нравится мне эта компания! :D
Им давно пора переименоваться в Lies & cheats, ltd :)
есть и более "понятные" названия - ACME ltd, например.
> есть и более "понятные" названия - ACME ltd, например.ООО "Вектор"?
Не, Рога и Копыта, инкорытейтед.
они такие жалкие. это даже не смешно
Срам какой!
attached: facepalm.mkv
буквально два дня назад читал высер обного из руководителей МС о том, что подгонка браузеров под прохождение определенных тестов есть УГ (с тонким намеком на хром) и что для ИЕ9 будут заниматься ТОЛЬКО улучшением производительности для реальных сайтов. мс такие мс, убогие они да, но богатые)
> буквально два дня назад читал высер обного из руководителей МС о том,
> что подгонка браузеров под прохождение определенных тестов есть УГ (с тонким
> намеком на хром) и что для ИЕ9 будут заниматься ТОЛЬКО улучшением
> производительности для реальных сайтов. мс такие мс, убогие они да, но
> богатые)Господа, вы уж определитесь: или MS, или мс... а то я чёйта каждый раз нервно вздрагиваю...
Микрософт нашел для себя новое призвание и составил конкуренцию Петросяну :-) Пусть дальше отжигают!
Неужели у них уже ВСЕ так плохо.
Они же фактически расписались в собственном бессилии. Ничего с этим бегемотом поделать уже не могут.
> Они же фактически расписались в собственном бессилии. Ничего с этим бегемотом поделать
> уже не могут.Могут. Например перевести на движок Gecko или Webkit :)
> Могут. Например перевести на движок Gecko или Webkit :)И чем он будет лучше оригинальных мозиллы и хрома? :)
Не могут. IE - это помимо всего прочего ещё и COM-библиотека, поэтому куча приложений зависит от деталей его внутренней реализации. Написать враппер вокрут webkit можно, но он не будет пвторять функциональность на 100%, а совместимость для M$ имеет больший приоритет, чем производительность.
Зачем, зачем делать ТАКИЕ глупости?!!Ведь эффект от (совершенно неизбежного) разоблачения жульничества многократно превысит любой пиар от "тестов"!
Неужелти у них уже все нормальные люди разбежались и остался один шлак?
там у них столько несовместимых ни с чем технологий, которые кстати уже даже идут в разрез с их же новыми, что...
ие6 многие вынуждены ещё держать, т.к. в своё время завязались на "инновации" от мс.
> Неужелти у них уже все нормальные люди разбежались и остался один шлак?Вы это только сейчас заметили?
ЗЫ а еще google://ie7 team photo ;).
IE9 Team круче http://www.google.ru/imglanding?q=ie9%20team%20pho...Просто рыдаль...
такие люди не могут программировать
Ты тоже заметил, что внизу справа до 7 посчитать не смогла?
Ну, допустим, опубликованные диффы с добавленными бесполезными "true;" и "return;" действительно доказывают читерство. Но пример из этой статьи с
>> вместо "if (TargetAngle > CurrAngle)" написать "if (TargetAngle <= CurrAngle)"я что-то не понял. С каких пор эти два выражения могут считаться логически идентичными?
Но замедление в 20 раз при замене < на <= явно указывает на жульничество.
Скорее всего ошиблись, и if (TargetAngle > CurrAngle) заменяли на if (CurrAngle <= TargetAngle)
Эти выражения вроде как тождественны )
Неа, не тождественны.
> Неа, не тождественны.На результата вычисления в цикле замена не влияет, наоборот замена проверки делает цикл бессмысленным, так как условие при "<=" заведомо _никогда_ не выполняется, а при > выполняется определенное число итераций. Оптимизатор IE игнорирует ">", но полностью выполняет все итерации для заведомо бессмысленного "<=".
Вот кусок кода из того теста:
TargetAngle = FIXED(28.027);
CurrAngle = 0;
for (Step = 0; Step < 12; Step++) {
var NewX;
if (TargetAngle > CurrAngle) {
NewX = X - (Y >> Step);
X = NewX;
CurrAngle -= Angles[Step];
}
Step++;
}
}
И почему меня это не удивляет? :)
> И почему меня это не удивляет? :)Потому что не в первый раз.
Они не идентичны, но весь noop блок тестового кода, в который в том числе входит эта проверка, должен был быть вырезан оптимизатором, работай их "Dead Code Elimination" как задумано, независимо от того, какая там проверка.
Спасибо, дошло.
грустно всё это
Нисколько не грустно - весьма радостно!
Побольше m$ таких провалов!
а в чем провал? вы целиком читаете?
Поймали на жульничестве m$-компашку!
> Поймали на жульничестве m$-компашку!тоже мне новость. жульничество везде, где только можно - бизнес модель m$.
И что тесты прочитает много больше людей, чем это разоблачение
> вы целиком читаете?Да. И даже больше.
> а в чем провал?
Глючащая оптимизация работаютщая быстро в тесте, и неправильно обрабатывающая javascript в других случаях.
http://blog.mozilla.com/rob-sayre/2010/11/17/dead-code-elimi.../
Цель оправдывает средства. Акулы капитализма как они есть.
Вообще после того как эту новость разобрали по косточкам и обсудили как и почему так происходит - появление ее тут в таком дико красноглазом пересказе - просто умиляет :)))Вот тут объясняется как это произошло:
http://blogs.msdn.com/b/ie/archive/2010/11/17/html5-and-real...Вот тут - русский перевод (частично):
http://habrahabr.ru/blogs/browsers/108355/Вот тут:
http://habrahabr.ru/blogs/browsers/108313/
Обсуждается как и почему это произошло
> Обсуждается как и почему это произошлоМы добиваемся не правды, а эффекта. :)
>> Обсуждается как и почему это произошло
> Мы добиваемся не правды, а эффекта. :)Да это то понятно...увидели то что хотели увидеть..
хоть бы заголовок новости поправили. нет же
Заголовок верно написан. Данный dead code elimination работает только для операций в одной функции из теста sunspider и в реальной жизни не имеет практического применения. Самый настоящий мухлёж.Как только в тест добавят легкий side effect, IE9 с первой позиции переместится в конец, где ему и место.
> Обсуждается как и почему это произошлоХм, вообще-то там обсуждается "обман при прохождении SunSpider JS" ;-))
ага, мне всегда забавно читать такие "честные и правдивые" новости тут
клин, клином вышибают. И ничего личного, просто война. :)
Павлинукс, тут ты не прав. Опен сорс таким гнилым как майкрософт никогда не был и не будет.
Он уже стал гнилым. ибо сообстветво GNU держится только на ненависти к MS.
убери MS и станет вопрос как жить.. а по другому они не умеют - будут экстренно искать врага.
> а по другому они не умеют - будут экстренно искать врага.Тут иная война, методом естественного отбора, и никакого гуманизма. :)
> Он уже стал гнилым. ибо сообстветво GNU держится только на ненависти к MS.
> убери MS и станет вопрос как жить.. а по другому они не
> умеют - будут экстренно искать врагаБудут воевать с Эплом или Ораклом. А после того, как "революция" начнет пожирать своих детей, полетят головы с верхушки. И выживет только самый умный и хитрый
> Он уже стал гнилым. ибо сообстветво GNU держится только на ненависти к
> MS.
> убери MS и станет вопрос как жить.. а по другому они не
> умеют - будут экстренно искать врага.Это не правда, Ричард показывает нам путь истинный!
> ага, мне всегда забавно читать такие "честные и правдивые" новости туттогда почему при добавлении лишней переменной, несущественном для логики изменении условии, изменении цикла и добавлении nop-ов оптимизатор сразу перестает считать код мертвым ???? Ведь как не использовались результаты, так они и не используются.
вообще во всех трех обсуждениях пишут тоже самое - что скорее всего это специальная оптимизация под тест. или Вы так - лишь бы что сказать?
> ага, мне всегда забавно читать такие "честные и правдивые" новости тутНу так нефиг оптимизить только под тесты, тогда и читать коменты людей о том что они думают о такой "оптимизации" не придется. Думаете, SunSpider единственный тест в мире? Индусы из команды надеятся что такая халтура как оптимизация под конкретный тест не всплывет? Ну да, щаззз, мечтайте. Если в одном тесте выперли вперед а в 20 других в опе - тут все и дураку понятно ;)
А вот тут объясняется, что отмазка от МС это хорошая мина при плохой игре:http://blog.mozilla.com/rob-sayre/2010/11/17/dead-code-elimi.../
> Вообще после того как эту новость разобрали по косточкам и обсудили как
> и почему так происходит - появление ее тут в таком
> дико красноглазом пересказе - просто умиляет :)))
>Вот тут объясняется как это произошло:
>http://blogs.msdn.com/b/ie/archive/2010/11/17/html5-and-real...Первое же "Tuning the JavaScript Engine for Real world patterns" это и есть та самая подгонка эвристического характера. Dead Code Elimination - давно известные алгоритмы, если бы в данном случае была бы честная оптимизация, то проблем с производительностью при столь тривиальных изменениях кода не могло возникнуть.
и что там обсудили ?
здесь заданы конкретные вопросы на них не получены конкретные ответы...
так что пока ms в жопе
так ты еще на сайте по генту спроси по ie9 и жди ответов...
По существу сказать что-нибудь можешь, или как работодатель, только глупые отмазки писать будешь?
молодцы , интересно что они еще придумают в другой раз ?
"бенчмарк" на открытие страничек MSN перед камерой и замеры по секундомеру уже был :)
На кого они расчитывают с такими методиками тестов ? Вы еще ругаете Фороникс ? Тогда , что называется, MS идет к вам!
в следующий раз они придумают свой единственно правильный закрытый набор тестов, а все остальные объявят ошибочными и глючными. и в этих тестах они будут белями и пушистыми, а все остальные - неудачниками.
> молодцы , интересно что они еще придумают в другой раз ?Ваши любимые компиляторы gcc умеют делать подобные оптимизации с чёрт знает какой версии. Может быть просто не в таком мощном объёме.
Поэтому сама оптимизация DCE - дело прекрасное и нужное. Конечно, реализация убогая.
Почему так получилось - думаю, что просто народ, который кодировал DCE в IE, ориентировался на этот тест. И, как обычно, считал, что УМВР и ладушки :-).
А был подлог или нет со стороны МС, можно узнать только раскопав, как же аннонсировалась эта фича. Было ли это заявлено, как "термоядерное ускорение JS" или как DCE. Если как DCE, то подлога нет - просто реализовано мастером http://caricatura.ru/top/best/url/parad/oleg_docjak/6050/ . :-)
-------------------
Что надо делать - это исправлять тест, так чтобы DCE не мешало; делать специальные тесты на DCE; исправлять DCE в IE. Я думаю, так всё и произойдёт.
>> молодцы , интересно что они еще придумают в другой раз ?
> Ваши любимые компиляторы 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; } });
> GCC умеет это делать для языка Си. В блоге мозилловцев ясно показано, почему это будет приводить к нескончаемым проблемам в JavaScript:В языке С оптимизации тоже приводят к "нескончаемым проблемам". :-( Поэтому-то они и вводятся очень осторожно - см., к примеру, чудесную монографию А. Фога - http://agner.org/optimize/optimizing_cpp.pdf
Но это не повод же совсем ничего не делать. Насколько я понимаю, IE - это первая команда, которая делает DCE. Верно?
>IE - это первая команда, которая делает DCE. Верно?Похоже они эту версию ради отмазки сочинили.
А оптимизацию под конкретные сайты Опера пыталась сделать.
> IE - это первая команда, которая делает DCE. Верно?Ага, только вот избирательная оптимизация под sunspider выглядит как-то подозрительно.
>> IE - это первая команда, которая делает DCE. Верно?
> Ага, только вот избирательная оптимизация под sunspider выглядит как-то подозрительно.Не сказал бы. Просто взяли первый попавшийся тест, на нём прогнали, получилось круто. Обрадовались и тут же показали. На других тестах не прогнали из-за лени, недостатка времени или ещё чего.
Взяли бы сначала другой тест, была бы избирательная оптимизация под него :-).
Тут же в комментариях умные товарищи говорят, что сильно неочевидно то, что DCE даст в результате больше времени, чем потратит на анализ. Поэтому разумно взять какой-нибудь модный тест и реализовать DCE "под него".
Пусть криво, но хотя бы оценить полезность DCE - точно ли время сэкономит? Или больше потратит?
Если оптимизация идет не от общего к частному, а наоборот - это не оптимизация, а накрутка конкретных моментов и костыли.
DCE, в частности, должен делать АНАЛИЗ кода, а не поиск знакомых шаблонов. Да еще такой топорный, что это приводит к ошибкам в похожем коде.
>поиск знакомых шаблоновтоже нормальная практика, особенно на регэксах
> В блоге мозилловцев ясно показано, почему это будет приводить
> к нескончаемым проблемам в 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
Забыли добавить, что новый оптимизатор не берёт в расчёт гибкость javascript в прототипировании и запросто приводит к багам на ровном месте.http://blog.mozilla.com/rob-sayre/2010/11/17/dead-code-elimi.../
Предлагаю Микрософту в эксплорире замутить "Dead Code Elimination" для всех возможных
конструкций JavaScript и в подарок, каждому установившему, дарить массив на 16Тб.
Я так понял, подобный код, ничего не возвращающий и далее не использующийся, возможен только на сайтах, специально его размещающих. Т.е. как раз синтетические тесты. В реальной жизни такого не увидишь. А если код сайта позволяет себя так лихо "оптимизировать", то странный какой-то код. Я не сайтостроитель, не могу судить насколько верно размышляю.
Подобный код,
Ничего не возвращающий
И далее не использующий,
Возможен только на сайтах,
Специально его размещающих.
Стих прям, вариации на тему Маяковского, лови плюс :)
да уж... сумбурно высказался, мысли в кучу не собрал :)
Еще как верно. Дело в том что мс девелоперов держит за человекоподобных обезьян(возможно это связано с обилием таковых в штате самой компании).
> Я так понял, подобный код, ничего не возвращающий и далее не использующийся,
> возможен только на сайтах, специально его размещающих. Т.е. как раз синтетические
> тесты. В реальной жизни такого не увидишь.Что вы, что вы.
В реальной жизни, в долгоживущих компилируемых программах такое сплошь и рядом. И DCE в С++ компиляторах присутствует с незапамятных времён. Другое дело, что компиляторные оптимизации могут вносить ошибки и оставлять вроде очевидные куски никогда невыполняемого кода.
И с С++ тестами такие проколы встречаются очень часто. Но это считается проколом теста, а отнюдь не компилятора.
Конечно, на реальных сайтах ускорения в 10 раз не будет, так на то и тесты синтетические.
На ЛОРе неплохое обсуждени6еполучилось: http://www.linux.org.ru/forum/talks/5585331
не понятно на кого рассчитаны эти тесты, ведь целевая аудитория этой поделки вряд ли даже знает о существовании других браузеров.
Целевая аудитория не знает, что такое браузер вообще. Для них это "интернет".
> Целевая аудитория не знает, что такое браузер вообще. Для них это "интернет".Если не гацкие хацкеры, сидел бы сейчас юзер, зомбированный микрософтом,
и по командам венды ходил бы в туалет. Windows стоил бы 3000$, компутер - 1$,
самостоятельная установка софта на комп - статья УК Микрософтской республикии россия,
до 15 лет на кремниевых рудниках. Подключение к интернету без прав доступа, мед. справки
из псих. диспансера, окулиста, проктолога, венеролога - до 5 лет рудников.
Подключение к интернету без мед. справки из псих. диспансера - до 5 лет рудников... Мечта...
> Подключение к интернету без мед. справки из псих. диспансера - до 5
> лет рудников... Мечта...А то, что справка на совсем небольшую сумму покупается - ничего?
На корпоративных покупателей, т.е. на кого-то вроде начальников IT-отделов.
Хм, експлорера нет, но вот вопрос по оптимизатору opera.По образу и подобию теста с хабра наваяно:
1. Отрабатывает как и положено
<html><body>
<script language="Javascript">
var start = new Date();
for (var i = 0; i < 10; i++) {
if (1)
alert(i);
else
alert("WTF???");
}
alert(new Date() - start);
alert(i);
</script>
</body></html>2. Стоит добавить "dead code", как в opera(gentoo, winxp под virtualbox) начинается феерическая фигня. В firefox и chromium-bin что в gentoo, что в vbox оба скрипта работают идентично. Я чего-то не понимаю?
<html><body>
<script language="Javascript">
var start = new Date();
for (var i = 0; i < 10; i++) {
if (1) {
for (var j = 0; j < 1000; j++)
var k = i + j;
alert(i);
} else
alert("WTF???");
}
alert(new Date() - start);
alert(i);
</script>
</body></html>
Мне плевать на MS, но я похоже чего то не понимаю. Вчера в очередной раз занимался оптимизацией скорости работы своего интерпритатора. Статистика выполнения одного из блоков показывала очень большое время. Потрати сутки на переделку алгоритма и теперь этот блок выполняется почти мгновенно. Так что - я жулик ?
> Мне плевать на MS, но я похоже чего то не понимаю. Вчера
> в очередной раз занимался оптимизацией скорости работы своего интерпритатора. Статистика
> выполнения одного из блоков показывала очень большое время. Потрати сутки на
> переделку алгоритма и теперь этот блок выполняется почти мгновенно. Так что
> - я жулик ?Если ты ненавидишь микрософт- то ты герой. Добился высокой производительности и оптимизации. В противном случае - естественно жулик :) Только гейтсоненавистники имеют моральное право на оптимизацию.
Не, все не так как вы вещаете. Предъявы начнутся если Вася вылезет со своим интерпретером и скажет что его интерпретер всех заруливает. При том как доказательство предоставит тест состоящий из блока который Вася недавно заоптимизил как раз, и только его. Специально подогнанный такой тест. На остальных тестах ессно Васин интерпретер не покажет ничего сверхъестественного.Ну так вот, в духе MS по жизни было заявить "windows server обгоняет Linux" и привести в качестве примера такие вот высосанные из пальца случаи, задвинув на 100500 остальных, менее удобных ситуаций. Вроде бы и не соврали, и себя красиво выставили, вот только всю правду - не сказали. Оптимизация - хорошо. А вот когда оптимизируют с прицелом на кульные попугаи в писькомере а на остальное забивают - вот это уже попахивает мошенничеством. Если бы микрософт не попадался много раз на сомнительных жонглированиях фактами - ни у кого бы и претензий не было. Тут им видимо слегка попортили очередную попытку пиара - "смотрите, как мы всех ловко рвем в SunSpider". Ну да, в одном тесте может и зарулят всех. А толку? Вебмастеров интересует общая производительность движка, а не синтетически накрученные попугаи в одном конкретном тесте.
>Мне плевать на MS, но я похоже чего то не понимаюДумается, вам не плевать. Иначе, после столь информативного обсуждения, с кучей внешних ссылок, вы бы не задавали такие вопросы. Очень хорошо было разобрано - у МС оптимизация под один тест. Другого профита нет.
> Потрати сутки на переделку алгоритма и теперь этот блок выполняется почти мгновенно. Так что - я жулик ?Если этот блок присутствует _только_ в одном-единственом тесте (который тебе предоставил начальник/заказчик и т.д.) - ты самый настоящий жулик.
Т.к. в реале от твоих телодвижений никакой пользы.
Думаю IE ведет себя аналогично во всех тестах, где есть dead code. Просто на них его не тестировали. Понятное дело, что их эвристика пока ошибается достаточно часто, все-таки они первые кто встраивает такую оптимизацию в свой JavaScript движок.
> ..., все-таки они первые кто встраивает такую оптимизацию в свой JavaScript движок.и надеюсь посление :-)
http://www.opennet.me/openforum/vsluhforumID3/72642.html#113
Это все конечно "замечательно", но ИМХО к тематике сайта не относится.
У нас ведь не www.MicroSoftHaters.ru
> Это все конечно "замечательно", но ИМХО к тематике сайта не относится.
> У нас ведь не www.MicroSoftHaters.ruIMHO, очень даже относится. Когда IE заявляет, что теперь самый быстрый браузер, нужно отстаивать честь открытых Firefox и Chromium, раскрывая глаза на то, в чем на самом деле дело.
куда ктится этот мир ... ох уж эти марктойдо-программисты :-) [я про тех программистов, которые ориентирют свои взгляды основываясь на красивых теориях... которые наверняка придумали маркетологи :-D]ну вот ОБЪЯСНИТЕ -- НАФИГА ВООБЩЕ нужно чтобы браузер удалял "мёртвый" код?
не лучше ли просто в своих javascript-приложениях НЕ_ПИСАТЬ пустых цыклов?
....ну вот КАКОЙ смысл javascript-программисту от этих оптимизаий? %) %)
как только javascript-алгоритм будет чуть более сложный (чуть более в функциональном стиле) и состоять из невероятной кучи переменых function-типа -- и нельзя будет прото-глядя на алгоритм сказать есть-ли-там-пустые-цыклы так как адреса конкретных функций будут храниться (и изменяться) внутри переменных -- вся эта говно-"оптимизация" нифига работать не будет. а будет только тормазить процесс выполнения...
ну очевидно же!! :-)
бесспорно лучше писать всегда и всем идеальные программы. почему не так? потому и существуют dce
ничего "идеального" не существует :-) ... но тем не менее -- может напишешь ХОТЯБЫ ОДИН случай когда инженеру может понадобиться написать пустой цикл в [не тестовом] javascript-приложении?
Неравномерно работающие в разных браузерах паузы "через опу" для, например, анимации от программистов с тяжелым васик-детством. Хотя таких лучше сразу пристрелить на всякий случай.
Все так делают, вспомним драйывера от Nvidia, оптимизированыые под тесты...
Вот только ms-овцы совсем недавно втирали, что жульничать с тестами больше не будут, а займуться производительностью для реальных сайтов.
Это все фигня.
Вы сюда посмотрите:
http://www.microsoft.com/india/msidc/Microsoft® India Development Center.
Я плакаль...
Microsoft экономит на программистах, которые создают основные продукты на продажу.
Чего ждать от их ПО.
А вас фейлы IE9 будоражат.
> Это все фигня.
> Вы сюда посмотрите:
> http://www.microsoft.com/india/msidc/
> Microsoft® India Development Center.
> Я плакаль...
> Microsoft экономит на программистах, которые создают основные продукты на продажу.
> Чего ждать от их ПО.
> А вас фейлы IE9 будоражат.Индийские программисты лучшие в мире. Их услугами помимо Майкрософта пользуется тот же Оракл.
>> Это все фигня.
>> Вы сюда посмотрите:
>> http://www.microsoft.com/india/msidc/
>> Microsoft® India Development Center.
>> Я плакаль...
>> Microsoft экономит на программистах, которые создают основные продукты на продажу.
>> Чего ждать от их ПО.
>> А вас фейлы IE9 будоражат.
> Индийские программисты лучшие в мире.По количеству кода? Не спорю =)
> Их услугами помимо Майкрософта пользуется тот же Оракл.
Есть предположение, что МС платит за количество кода, а Оракл платит более адекватно.
Потому что, раз они лучшие, то чего же они пишут индусский код?