21.11.2015, 12:37
|
Интересующийся
|
|
Регистрация: 26.05.2013
Сообщений: 22
|
|
Как измерить CPU пользователя
есть JS скрипт, который циклически работает через setTimeout, на слабых мобильных устройствах или перегруженном десктопе, подвисает
хочется как-то измерять "мощность" устройства и в зависимости от загруженности CPU менять значение setTimeout на оптимальное
при этом грузить проц тестами нельзя
подскажите идеи
|
|
21.11.2015, 14:18
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Сообщение от lekba
|
хочется как-то измерять "мощность" устройства
|
А что есть "мощность устройства"?
|
|
21.11.2015, 14:45
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,123
|
|
Сообщение от lekba
|
setTimeout
|
может их слишком много а не один запускается?
|
|
21.11.2015, 15:27
|
Интересующийся
|
|
Регистрация: 26.05.2013
Сообщений: 22
|
|
Сообщение от laimas
|
А что есть "мощность устройства"?
|
в основном это CPU + RAM, иногда это перекладывается на графический проц, так как RAMа сейчас везде хватает, проблемным местом остается CPU, из-за его нехватки скрипты работают медленнее, как-то так
Сообщение от рони
|
может их слишком много а не один запускается?
|
точно запускается один раз, через setTimeout можно управлять когда запускать следующую итерацию и она запускается по отработке текущей, это setInterval может запустить кучу экземпляров
|
|
21.11.2015, 16:04
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Сообщение от lekba
|
в основном это CPU + RAM
|
JS в контексте веб-страницы не сможет выдать "параметры мощности" ибо не может получить ни модели CPU, ни объема RAM. К тому же "мощность" как вы выражаетесь ничего собственно ни дает. У меня настольная система, в ней 8 ядер у CPU, 32 ГБ RAM, но это не означает, что ваш JS сценарий распределит свои задачи между всеми ядрами и все будет летать.
Мало иметь кучу ядер, важно уметь ими управлять, а сама ОС этого практически не делает для себя, не говоря уже о том, чтобы она это делала для приложений. Только ПО написанное под многоядерные системы эффективно использует все ядра CPU, а например видео редакторы как Adobe Premiere еще и задействует десятки ядер GPU nVidea, и при этом мощь обработки видео со множеством дорожек, фильтров, переходов можно видеть в режиме реального времени.
JS вам такого не сделает, хотя браузеры сейчас уже используют возможности GPU. Другими словами, даже если знать что на CPU и сколько RAM в системе, в полной мере этим все равно вы не сможете распорядится, а любая ОС для того и нужна чтобы управлять множеством задач, то есть кроме ваших, есть и другие, о которых вы тоже ничего не можете знать, а они то тоже "кушают мощности". Да еще если ваш сценарий неэффективный, да еще чей-то, да еще...
Но для мобильных устройств можно хотя бы приблизительно знать и CPU, и RAM (в стандартной поставке), детектируя устройство и сопоставляя ему его CPU/RAM. В основе их это ARM Cortex-A7, A9. В общем по модели устройства знаем технические данные. Для настольных систем - пролет.
|
|
21.11.2015, 16:18
|
Интересующийся
|
|
Регистрация: 26.05.2013
Сообщений: 22
|
|
Сообщение от laimas
|
Но для мобильных устройств можно хотя бы приблизительно знать и CPU, и RAM (в стандартной поставке), детектируя устройство и сопоставляя ему его CPU/RAM. В основе их это ARM Cortex-A7, A9. В общем по модели устройства знаем технические данные.
|
технические данные не возможно применить на практике
если на устройстве запущено куча приложений, которые заняли память и процессор, то зайдя на мой сайт, CPU не будет соответствовать табличному списку, ибо CPU занято другими приложениями
на данный момент у меня работает костыль в виде измерения времени от начала работы setTimeout до его окончания и в зависимости от скорости отработки, устанавливается следующая задержка
но вот выяснилось, такой костыль начинает грузить проц на слабых мобильных устройствах и приводит к подвисанию, что не есть хорошо
|
|
21.11.2015, 16:27
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Сообщение от lekba
|
если на устройстве запущено куча приложений, которые заняли память и процессор, то зайдя на мой сайт, CPU не будет соответствовать табличному списку, ибо CPU занято другими приложениями
|
О чем и речь. Если бы вы писали приложение под ОС, то в нем можно узнать все запущенные приложения, доступную для вашего приложения память и прочее нужное, а в рамках веб страницы такого увы не получить.
|
|
11.05.2018, 22:39
|
Новичок на форуме
|
|
Регистрация: 24.05.2015
Сообщений: 6
|
|
Мне тоже нужно узнать быстродействие. Нагрузил сайт анимацией, обычной на JQuery, но не уверен, что всем нужна эта анимация, особенно если пользователь сидит на дешевом телефоне или медленном нетбуке. Вы скажите "так убери анимацию". Зачем? Мы стремимся идти в перед. Представте, что у вас в телефоне нет анимации никакой. Как это выглядит? Тупо. А с сайтами - как у всех. Если кто знает как измерить быстро скорость хотя бы разок, отпишитесь.
|
|
11.05.2018, 23:41
|
|
Профессор
|
|
Регистрация: 01.12.2016
Сообщений: 3,650
|
|
andriy159,
с помощью js наверное только нагрузкой. но в данном случае вам это не подойдет.
Для мобильных устройств можно попробовать по косвенному признаку, версии операционной системы, разрешения экрана. но гарантии точного определения это не даст.
|
|
12.05.2018, 02:02
|
|
Тлен
|
|
Регистрация: 02.01.2010
Сообщений: 6,589
|
|
Сообщение от lekba
|
в зависимости от загруженности CPU менять значение setTimeout на оптимальное
при этом грузить проц тестами нельзя
подскажите идеи
|
Ну какбэ браузер сам "в зависимости от загруженности CPU меняет значение setTimeout на оптимальное", в этом вся суть. =)
Если вам надо менять какие-то параметры в зависимости от того сколько действительно прошло времени, то так и делайте: поучайте разницу меж датой назначения таймаута и датой вызова функции и, в зависимости от отклонения от расчётного, правьте коэффициенты...
__________________
29375, 35
|
|
|
|