Использование javascript для определения производительности CPU/GPU устройства? - программирование
Подтвердить что ты не робот

Использование javascript для определения производительности CPU/GPU устройства?

(Вопрос не относится к трио .js, но я буду использовать его в качестве примера)

Я использую three.js для разработки интерфейса веб-приложения в последнее время и написал несколько замечательных отступлений между WebGL и Canvas renderer (для настольных браузеров).

Но теперь проблема заключается в том, как правильно определить возможности устройства, есть две проблемы:

  • функции браузера (статические функции, такие как webgl/canvas): это в значительной степени разрешено в веб-сообществе с помощью простого обнаружения функции.
  • возможность устройства: это сложная часть, без прямого доступа к информации об аппаратном обеспечении устройства, нам нужны некоторые способы сказать, следует ли нам отказаться от менее требовательного к оборудованию кода.

Заметный пример: поддержка мобильных приложений Opera Mobile Mobile/Opera поддерживает WebGL, но они недостаточно или ограничены аппаратным обеспечением устройства.

Несколько обходных решений, которые я придумал до сих пор:

  • Использовать общую функцию в качестве индикатора производительности - сенсорное устройство, например, имеет менее мощное оборудование в целом. Кон: это не будущее.
  • Черный список известных багги-браузеров/устройств. Нравственность UA будет неизбежной, и ее может быть сложно поддерживать.
  • Тест производительности - поэтому вопрос, помимо запуска кода и измерения частоты кадров, есть лучшие варианты?

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

4b9b3361

Ответ 1

В итоге я использовал подход оценки производительности в проекте, где мы хотели использовать возможности холста, доступные на рабочих станциях с высокими рабочими характеристиками CPU/GPU, а также устройства с более низкой скоростью, такие как таблицы и телефоны.

В основном мы начинаем с минимальной сложности сцены, и если renderloop занимает меньше 33 мс, мы добавляем сложность (мы также уменьшаем сложность, если renderloop начинает принимать слишком долго в более позднее время).

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

Ответ 2

Вы можете использовать http://webglstats.com/ для поддержки аппаратного обеспечения и обнаружения функций WebGL.

Ответ 3

Если вы используете three.js, вы можете просто использовать детектор .js, чтобы узнать, включен ли webgl. Кроме того, пребывание в стороне от canvasrenderer поможет. используйте webglrenderer или softwarerender. поскольку они допускают большее количество вершин. softwarerender является довольно новым и нуждается в некоторой работе, но может быть использован.