есть еще нюанс, не все знают, спор про скорость напомнил. Давно были П4 и еще какая-то серия за ними от интелла, они еще просрали мобильным пням ставшими core duo и т.п. и просрали амд.
Классический прикол, как раз по Олджу:
function doSomething(arg1, arg2, arg3) {
if (arg1 wrong) {
throw AAAA1!;
}
if (arg2 wrong) {
throw AAAA2!;
}
if (arg3 wrong) {
throw AAAA3!;
}

// do something very, very simple
return arg1 + arg2 + arg3;
}

так вот для П4 и с ейже архитектурой, учитывая глубину конвейера в них в ~30+ команд, учитывая, что при нормальной работе аргументы нормальные, в большом проекте, на хранение истории всех переходов никакой памяти не хватит, учитывая, что за такт те процы исполняли по несколько nop-ов, каждая проверка эквивалентна 60-90 nop-ам. Компилятор/интерпретатор для подобных проверок генерит условный переход дальше если проверка не выполняется (аргумент корректный), если же аргумент не правильный, то никакого перехода нет. А у всех процов при переходе сбрасывается конвейер, весь, повторю для процов с архитектурой пентиума4 это~30+ команд (в среднем одна или более команд за такт). Менее частотные центрино с амд выиграли за счет более короткого конвейера 10-20 команд всего. Фактически П4 большую часть тупо сбрасывал и снова заполнял свой конвейер попутно при этом нагревая воздух. И вспоминая изначальный вариант например функции работы с картинкой уже здесь обсужденной здесь, она вполне может работать быстрее чем "оптимизированная с проверкой входных параметров по Олджу". Кстати такой codestyle была из причин, что процы с архитектурой пентиума4 и проиграли (аспект читабельности и т.п. не учитываю, только взаимодействие с процом).

Это к тому, что слова быстрый, оптизация и т.п. бла бла бла, только бла бла бла если не учитывать и не указывать остальные факторы.

Схватил жопку в брюсселе
бабами любимы
тёплые коты
а чего добился
в этой жизни ты