Операторы переключения JS: имеет ли значение оптимизация в наиболее вероятном случае? - PullRequest
1 голос
/ 26 октября 2011

Предполагая эту конструкцию

switch(foo) {
    case "foo":
        // ...
    break;
    case "bar":
        // ...
    break;
    ...
    default:
        // ...
    break;
}

или аналогичный условный блок (только общие логические операторы), имеет ли смысл с точки зрения производительности ставить на первый план наиболее вероятное условие?

И если да, то какой порог, когда это начинает иметь смысл, против "проблемы", чтобы выяснить, каково будет наиболее вероятное состояние?

Ответы [ 3 ]

3 голосов
/ 26 октября 2011

Такая микрооптимизация вызовет больше проблем, чем решит.С Javascript относительно сложно оценить такие конструкции из-за множества деталей реализации, которые абстрагируют движки JS.Профилирование, вероятно, тоже не будет очень проницательным.

JS - это язык сценариев, а не C. Сделайте ваш код читабельным и лаконичным - кстати, это всегда должна быть ваша мантра, независимо от того, на каком языке вы пишете.

1 голос
/ 27 октября 2011

Пороговое значение, при котором он будет покупать что-либо для вас, - это если, когда вы случайным образом приостанавливаете это несколько раз, вы видите это в процессе выполнения этого оператора switch, в отличие от чего-то совершенно другого.

1 голос
/ 26 октября 2011

Ответ - да, это имело бы смысл.Если вы знали, что у чего-то гораздо больше правды, почему бы не поставить это в первое условие?Я считаю, что это звуковое программирование даже на языке сценариев.

Только потому, что это имеет смысл, но не делает это необходимым.Если это код, который запускается не часто, то незначительно, насколько важен порядок.Однако код в большом цикле с несколькими операторами условий может немного замедлить алгоритм.

Время беспокоиться об этом будет, когда вы заметите задержку.Даже тогда рефакторинг порядка условий, вероятно, был бы в нижней части моего списка дел.

...