Самый быстрый способ выполнить это?Троичный оператор?Переключатель?Массив? - PullRequest
1 голос
/ 12 сентября 2011

Какой самый быстрый способ сделать это?Переменные в левой части возвращают логическое значение, и они представляют диапазоны размеров окна.(Например, o1281 возвращает true для экранов 1281 и выше, o1025 возвращает true для 1025 и выше и т. д.)среднее (o641) состояние.

Стоит ли оно того?

1 Ответ

2 голосов
/ 12 сентября 2011

Хорошо, так что вы ищете первое истинное значение o, идущее в порядке убывания, и как только вы найдете его, вы ищете первое истинное значение r, имя которого <= это значение o.Не найдя ничего, вы хотите вернуть значение omarkup.

Поскольку у вас есть только несколько o-значений и r-значений, ваш код, каким бы «интересным» он ни казался, выглядит как минимумчисло возможных тестов.

Я не вижу, как бы помогли переключатели или хэши, так как вы, похоже, ищете в порядке убывания первое истинное значение .... Из-за этого я неПонятно, почему разделение также может повысить производительность.Оставьте все как есть или, если вы предпочитаете удобочитаемость (как это делают многие программисты), создайте объекты, для которых 1281, 1025 и т. Д. Являются полями .

Кроме того, обычно беспокоятся о производительности.что-то, что вы делаете, когда сталкиваетесь с операцией, которая будет выполняться много-много раз.Это тот случай, здесь?Это похоже на то, что вы выполняете только один раз, при условии, что значения o и r не меняются.(Только к вашему сведению.)

ADDENDUM

На основании комментария, добавленного к вопросу выше, это выглядит как операция, которую вы хотели бы хотели бывыполнить несколько раз.В этом случае, вероятно, можно самостоятельно оптимизировать уровень JavaScript, хотя современные компиляторы довольно хороши.Наибольшую обеспокоенность с точки зрения проверки кода будет то, что значения 1281, 1025, 961, 941 и т. Д. Выкладываются вручную и являются частью исходного кода, поэтому обслуживание, например добавление новых значений размера здесь,хорошо, хитрый и подверженный ошибкам.Тем не менее, основываясь на том, что вы показали, я думаю, можно с уверенностью сказать, что ваш JavaScript в том виде, в котором он написан, является наилучшим доступным, если использовать наивный компилятор.Вы всегда можете воспользоваться реализацией, которая определяет эти значения ровно один раз, а затем профилировать ее, чтобы увидеть, достаточно ли она быстра.Например, вы можете определить массив, такой как

var sizes = [1281,1025,961,641,481,320,0] 

и выполнить цикл, но да, в таких реализациях есть издержки.

Одна из проблем, которая может вам здесь помочь, - это тщательно продумать, чтоможно и нельзя кэшировать.Это может помочь ускорить будущие исполнения этого кода.

...