LINUX.ORG.RU

История изменений

Исправление uin, (текущая версия) :

Не, ну я то имею в виду такие вещи как например

function (ms) {
var s, m, h;
    s = Math.floor(ms) % 60;
    m = Math.floor(ms / 60) % 60;
    h = Math.floor(ms / (60 * 60));

   return {
       seconds: s,
       minutes: m,
       hours  : h
   }
}

А еще совсем недавно это же вычисление выглядело у меня вот так:
var x = Math.floor(ms),
    s = x % 60, h = 0,
    m = Math.floor(x / 60);
if (m > 59) {
    h = Math.floor(m / 60);
    m %= 60;
}


Поясню свое мышление: раньше я исходил из простой логики - чем меньше делать каких то действий тем лучше. Избегал дублирования действий, то есть до этого что то вычисляю кидаю в переменную и потом дальше этот результат использую. Через проверку условия реализовано потому что там где используется этот код, часы очень редкое явление, вычислять их каждый раз ни к чему.
Но потом я насмотрелся видео, начитался афигительных статей, узнал про зависиомость по данным, ветвления, а один раз написал вместо обычного цикла функции которые друг друга вызывали в цикличном порядке и узнал про такую штуку как call stack и что его можно переполнить.

Но вообще я конечно тесты вначале пишу что бы прповерить есть ли какой то эффект и не в худшую ли он сторону, хотя JIT конечно может творить с кодом (даже с неоптимальным) волшебные вещи, что неоптимальный код после двух трех запусков уже и не проигрывает.

Исходная версия uin, :

Не, ну я то имею в виду такие вещи как например

function (ms) {
var s, m, h;
    s = Math.floor(ms) % 60;
    m = Math.floor(ms / 60) % 60;
    h = Math.floor(ms / (60 * 60));

   return {
       seconds: s,
       minutes: m,
       hours  : h
   }
}

А еще совсем недавно это же вычисление выглядело у меня вот так:
var x = Math.floor(ms),
    s = x % 60, h = 0,
    m = Math.floor(x / 60);
if (m > 59) {
    h = Math.floor(m / 60);
    m %= 60;
}


Поясню свое мышление: раньше я исходил из простой логики - чем меньше делать каких то действий тем лучше. Избегал дублирования действий, то есть до этого что то вычисляю кидаю в переменную и потом дальше этот результат использую. Через проверку условия реализовано потому что там где используется этот код, часы очень редкое явление, вычислять их каждый раз ни к чему.
Но потом я насмотрелся видео, начитался афигительных статей, узнал про зависиомость по данным, ветвления, а один раз написал вместо обычного цикла функции которые друг друга вызывали в цикличном порядке и узнал про такую штуку как call stack и что его можно переполнить.

Но вообще я конечно тесты что бы прповерить есть ли какой эффект вообще и не в худшую ли он сторону, хотя JIT конечно может творить с кодом разные вещи.