Там нет публичной базы данных производительности по функции с помощью устройства, ни автоматизированный способ превратить потенциально медленные функции включения и выключения. Вы должны решить для себя, какие функции вы думаете, медленно, на каких устройствах и выключите их, такие как
body.transitions-are-slow * {
transition-property: none !important;
}
Затем договоритесь, чтобы поместить transitions-are-slow
класс на теле на основе какого-то устройства, нюхают и эмпирический знание производительности этого устройства.
Это для CSS, но вы также упоминаете JS. Однако я не могу придумать случаи, когда какой-то конкретный JS API особенно медленный на каком-то конкретном устройстве. JS будет медленно замедляться на более медленных устройствах. Поэтому я действительно не понимаю, почему, или как, вы хотели бы думать об отключении отдельных функций JS на основе проблем с производительностью устройства.
Существуют ли более эффективные методы, чем блоки выполнения кода времени?
Там нет очевидного способа временной метки производительности CSS, но для JS Я полагаю, вы могли бы сделать следующее, использовать с осторожностью:
function kill_if_slower_than(fn, threshold) {
var killed = false;
return function() {
if (killed) return;
var start = performance.now();
var result = fn.apply(this, arguments);
killed = performance.now() - start > threshold;
return result;
};
}
Это вернет функцию, которая превратится в не-оп в первый раз его выполнение занимает больше времени, чем threshold
миллисекунд. Вы, очевидно, не хотите использовать это на чем-то другом, кроме чего-то чисто необязательного. Он также не поможет вам в асинхронных ситуациях.
Я использовал performance.now
выше из-за его более высокого разрешения, однако на некоторых старых браузерах вам может понадобиться вернуться к Date.now()
.
@Knu, где? У вас есть ссылка? – Evan