Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 21.11.2015, 12:37
Интересующийся
Отправить личное сообщение для lekba Посмотреть профиль Найти все сообщения от lekba
 
Регистрация: 26.05.2013
Сообщений: 22

Как измерить CPU пользователя
есть JS скрипт, который циклически работает через setTimeout, на слабых мобильных устройствах или перегруженном десктопе, подвисает
хочется как-то измерять "мощность" устройства и в зависимости от загруженности CPU менять значение setTimeout на оптимальное
при этом грузить проц тестами нельзя
подскажите идеи
Ответить с цитированием
  #2 (permalink)  
Старый 21.11.2015, 14:18
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от lekba
хочется как-то измерять "мощность" устройства
А что есть "мощность устройства"?
Ответить с цитированием
  #3 (permalink)  
Старый 21.11.2015, 14:45
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,067

Сообщение от lekba
setTimeout
может их слишком много а не один запускается?
Ответить с цитированием
  #4 (permalink)  
Старый 21.11.2015, 15:27
Интересующийся
Отправить личное сообщение для lekba Посмотреть профиль Найти все сообщения от lekba
 
Регистрация: 26.05.2013
Сообщений: 22

Сообщение от laimas
А что есть "мощность устройства"?
в основном это CPU + RAM, иногда это перекладывается на графический проц, так как RAMа сейчас везде хватает, проблемным местом остается CPU, из-за его нехватки скрипты работают медленнее, как-то так

Сообщение от рони
может их слишком много а не один запускается?
точно запускается один раз, через setTimeout можно управлять когда запускать следующую итерацию и она запускается по отработке текущей, это setInterval может запустить кучу экземпляров
Ответить с цитированием
  #5 (permalink)  
Старый 21.11.2015, 16:04
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от 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. В общем по модели устройства знаем технические данные. Для настольных систем - пролет.
Ответить с цитированием
  #6 (permalink)  
Старый 21.11.2015, 16:18
Интересующийся
Отправить личное сообщение для lekba Посмотреть профиль Найти все сообщения от lekba
 
Регистрация: 26.05.2013
Сообщений: 22

Сообщение от laimas
Но для мобильных устройств можно хотя бы приблизительно знать и CPU, и RAM (в стандартной поставке), детектируя устройство и сопоставляя ему его CPU/RAM. В основе их это ARM Cortex-A7, A9. В общем по модели устройства знаем технические данные.
технические данные не возможно применить на практике
если на устройстве запущено куча приложений, которые заняли память и процессор, то зайдя на мой сайт, CPU не будет соответствовать табличному списку, ибо CPU занято другими приложениями

на данный момент у меня работает костыль в виде измерения времени от начала работы setTimeout до его окончания и в зависимости от скорости отработки, устанавливается следующая задержка
но вот выяснилось, такой костыль начинает грузить проц на слабых мобильных устройствах и приводит к подвисанию, что не есть хорошо
Ответить с цитированием
  #7 (permalink)  
Старый 21.11.2015, 16:27
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от lekba
если на устройстве запущено куча приложений, которые заняли память и процессор, то зайдя на мой сайт, CPU не будет соответствовать табличному списку, ибо CPU занято другими приложениями
О чем и речь. Если бы вы писали приложение под ОС, то в нем можно узнать все запущенные приложения, доступную для вашего приложения память и прочее нужное, а в рамках веб страницы такого увы не получить.
Ответить с цитированием
  #8 (permalink)  
Старый 11.05.2018, 22:39
Новичок на форуме
Отправить личное сообщение для andriy159 Посмотреть профиль Найти все сообщения от andriy159
 
Регистрация: 24.05.2015
Сообщений: 6

Мне тоже нужно узнать быстродействие. Нагрузил сайт анимацией, обычной на JQuery, но не уверен, что всем нужна эта анимация, особенно если пользователь сидит на дешевом телефоне или медленном нетбуке. Вы скажите "так убери анимацию". Зачем? Мы стремимся идти в перед. Представте, что у вас в телефоне нет анимации никакой. Как это выглядит? Тупо. А с сайтами - как у всех. Если кто знает как измерить быстро скорость хотя бы разок, отпишитесь.
Ответить с цитированием
  #9 (permalink)  
Старый 11.05.2018, 23:41
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

andriy159,
с помощью js наверное только нагрузкой. но в данном случае вам это не подойдет.
Для мобильных устройств можно попробовать по косвенному признаку, версии операционной системы, разрешения экрана. но гарантии точного определения это не даст.
Ответить с цитированием
  #10 (permalink)  
Старый 12.05.2018, 02:02
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,489

Сообщение от lekba Посмотреть сообщение
в зависимости от загруженности CPU менять значение setTimeout на оптимальное
при этом грузить проц тестами нельзя
подскажите идеи
Ну какбэ браузер сам "в зависимости от загруженности CPU меняет значение setTimeout на оптимальное", в этом вся суть. =)
Если вам надо менять какие-то параметры в зависимости от того сколько действительно прошло времени, то так и делайте: поучайте разницу меж датой назначения таймаута и датой вызова функции и, в зависимости от отклонения от расчётного, правьте коэффициенты...
__________________
29375, 35
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Мотоциклисты есть? l-liava-l Оффтопик 13 04.07.2014 13:35
Просмоторщик 3d-моделей. Как организовать отдачу файлов с сервера? microb Серверные языки и технологии 4 25.03.2014 21:58
Как вы относитесь к наркоманам? Maxmaxmaximus7 Оффтопик 7 05.02.2014 13:29
Как написать автозапускающийся скрипт на странице пользователя? evgenyivanov Общие вопросы Javascript 1 04.01.2014 15:09
Решение проблемы кодировок для AJAX и PHP без iconv (cp1251 в AJAX) Serge Ageyev AJAX и COMET 10 24.04.2013 20:48