Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
true; может разубедить анализатор dead code'а в том, что данная функция dead code'ом не является.С return — аналогичная ситуация, return; — возвратит null.Давай поспорим?
добавленные true и return никак не должны были повлиять на его производительностьЭто все домыслы. Чтобы сказать наверняка, нужно провести более серьезные исследования.
Я знаком со спецификацией яваскрипта.А с реализацией оптимизатора в IE9?
И вижу что все операции операции происходят над объявленными в самой функции переменным и не должны затрагивать ничего снаружи. Я вижу что возвращается undefined в обоих случаях.Не нужно говорить очевидных вещей, с этим никто не спорит.
if(IsSunspider == true) {
// work faster
}
if(IsSunspider == true) {
// get from cache
}
============================================
RESULTS (means and 95% confidence intervals)
--------------------------------------------
Total: 118.9ms ± 5.7%
--------------------------------------------
math: 118.9ms ± 5.7%
cordic: 39.1ms ± 9.5%
cordic-with-return: 40.4ms ± 8.5%
cordic-with-true: 39.4ms ± 6.9%
============================================
RESULTS (means and 95% confidence intervals)
--------------------------------------------
Total: 30.6ms ± 2.3%
--------------------------------------------
math: 30.6ms ± 2.3%
cordic: 1.0ms ± 0.0%
cordic-with-return: 15.4ms ± 2.4%
cordic-with-true: 14.2ms ± 3.2%
============================================
RESULTS (means and 95% confidence intervals)
--------------------------------------------
Total: 69.2ms ± 1.2%
--------------------------------------------
math: 69.2ms ± 1.2%
cordic: 22.8ms ± 2.0%
cordic-with-return: 23.4ms ± 2.1%
cordic-with-true: 23.0ms ± 1.5%
============================================
RESULTS (means and 95% confidence intervals)
--------------------------------------------
Total: 31.0ms ± 1.9%
--------------------------------------------
math: 31.0ms ± 1.9%
cordic: 1.0ms ± 0.0%
cordic-with-return: 15.2ms ± 2.0%
cordic-with-true: 14.8ms ± 3.8%
for (Step = 0; Step < 12; Step++) {
// =>
for (Step = 12; Step--;) {
for (Step = 0; Step < 12; Step++) {
// =>
for (i = 12; i--;) {
var NewX = i;
Step = 12 - i;
var AG_CONST = 0.6072529350;
function FIXED(X)
{
return X * 65536.0;
}
function FLOAT(X)
{
return X/65536.0;
}
function DEG2RAD(X)
{
return 0.017453 * (X);
}
var Angles = [
FIXED(45.0), FIXED(26.565), FIXED(14.0362), FIXED(7.12502),
FIXED(3.57633), FIXED(1.78991), FIXED(0.895174), FIXED(0.447614),
FIXED(0.223811), FIXED(0.111906), FIXED(0.055953),
FIXED(0.027977)
];
function cordicsincos(){
var X;
var Y;
var TargetAngle;
var CurrAngle;
var Step;
X = FIXED(AG_CONST); /* AG_CONST * cos(0) */
Y = 0; /* AG_CONST * sin(0) */
TargetAngle = FIXED(28.027);
CurrAngle = 0;
for (Step = 0; Step < 12; Step++) {
var NewX;
if (TargetAngle > CurrAngle) {
NewX = X - (Y >> Step);
Y = (X >> Step) + Y;
X = NewX;
CurrAngle += Angles[Step];
} else {
NewX = X + (Y >> Step);
Y = -(X >> Step) + Y;
X = NewX;
CurrAngle -= Angles[Step];
}
}
return;
}
var AG_CONST = 0.607252935;
function FIXED(a) {
return a * 65536
}
function FLOAT(a) {
return a / 65536
}
function DEG2RAD(a) {
return 0.017453 * a
}
var Angles = [FIXED(45), FIXED(26.565), FIXED(14.0362), FIXED(7.12502), FIXED(3.57633), FIXED(1.78991), FIXED(0.895174), FIXED(0.447614), FIXED(0.223811), FIXED(0.111906), FIXED(0.055953), FIXED(0.027977)];
function cordicsincos() {
var a, c, b;
FIXED(AG_CONST);
a = FIXED(28.027);
for(b = c = 0;b < 12;b++) {
if(a > c) {
c += Angles[b]
}else {
c -= Angles[b]
}
}
}
;
var cordicsincos = (function(){
...
return funtion(){
// текст функции cordicsincos
}
})();
var cordicsincos = function() {
var c = [2949120, 1740963.84, 919876.4032, 466945.31072, 234378.36288, 117303.54176, 58666.123264, 29334.831104, 14667.677696, 7333.871616, 3666.935808, 1833.500672];
return function() {
var b, a;
for(a = b = 0;a < 12;a++) {
if(1836777.472 > b) {
b += c[a]
}else {
b -= c[a]
}
}
}
}();
IE9 — Обман при прохождении SunSpider JS?