WebGL Benchmark - какие тесты мне следует создавать? - PullRequest
4 голосов
/ 05 января 2011

(я не уверен, должно ли это быть на https://softwareengineering.stackexchange.com/ или нет, пожалуйста, прокомментируйте, если вы так думаете)

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

В настоящее время я просто думал о таких тестах:

  • 1 одноцветный объект
  • 1 разноцветный объект
  • 1 текстурированный объект
  • 1 текстурированный объект с наложением
  • 1 текстурированныйобъект с молнией
  • 1 текстурированный объект с несколькими точками освещения
  • 1 сцена визуализируется в текстуру и использует ее на другом объекте
  • 1 модель анимации
  • все тестыс большим количеством объектов: 50, 500, 5000
  • изменение шейдеров / программ на рендеринг (один, два, несколько раз)

Это приведет к 40 различным тестам, но я неконечно, если это важные тесты для производительности.

Друг предложил протестировать на сложных шейдерах, но поскольку шейдер работает на графическом оборудовании, не должно быть никакой разницы для рабочего стола javaприложение, верно?

В любом случае, я чувствую, что производительность JavaScript является основным узким местом в WebGL.

Обновление

Я наконец-то сделалмой тестПосле обсуждения того, как должен работать эталонный тест, я создал следующее: http://martin.cyor.eu/benchmark

Ответы [ 3 ]

3 голосов
/ 06 января 2011

Я согласен с @timday в том, что вы должны склонить свое расследование к чему-то «реальному», и, как вы предложили в комментарии, вы можете захотеть, чтобы история о выборе между настольным или браузерным приложением.

Это именно то, над чем я сейчас работаю. Мой клиент имеет приложение для визуализации, которое в настоящее время работает на рабочем столе Windows. Типичная сцена для них имеет 500 000 треугольников, множество текстур и прозрачность. В настоящее время их пользователи не хотят устанавливать программу просмотра - они, как правило, работают в корпоративных средах, где системные администраторы контролируют то, что установлено на их компьютерах. И несколько пользователей предпочли бы запускать визуализацию на своих iPad, где зритель не будет работать в любом случае. Поэтому мой клиент хочет знать, решит ли WebGL свои проблемы с платформой, не говоря уже о том, что ни один браузер еще официально не поддерживает WebGL и что ни IE, ни iPad не объявили о какой-либо поддержке.

Помните, что любые тесты, которые вы делаете, относительно бессмысленны, потому что вы измеряете движущуюся цель. Производители браузеров усердно работают над внедрением WebGL и часто обновляют свои бета-версии. Они не только работают над совместным внедрением WebGL, но и должны беспокоиться о проблемах безопасности браузера и общем конвейерном потоке. Это видео рассказывает о некоторых проблемах (и дает представление о том, на что обратить внимание). Кроме того, производительность может варьироваться в зависимости от вашей ОС и графического оборудования.

Как вы указали, когда WebGL работает на графическом оборудовании, он должен работать так же быстро, как приложение для настольного компьютера. Ваши тесты должны попытаться подтвердить это, а затем вы должны попытаться измерить, где производительность теряется в результате нахождения в браузере. У меня такое ощущение, что Javascript сам по себе не является узким местом, просто потому, что Javascript не так много для выполнения (и в наши дни он довольно быстрый). Однако, как описано в конце вышеупомянутого видео, могут быть неэффективности, которые возникают в привязке Javascript-C ++, проверке запросов, управлении потоком и тому подобном. С другой стороны, производители браузеров (по крайней мере, Google) усердно работают над устранением этих недостатков.

Одна из вещей, которые я заметил, это не проблемы с частотой кадров / производительностью (в моем текущем тесте я могу отрисовать 500 000 текстурированных треугольников со скоростью 30 кадров в секунду), но эта частота кадров не кажется очень последовательной, и что кадры кажутся быть сброшенным время от времени. Я подозреваю, но не знаю, имеет ли это отношение к относительно простому способу setInterval() или запуску анимации в Javascript. (Mozilla mozRequestAnimationFrame может быть способом лучше справиться с этим).

Хотя я не знаю, насколько полезен какой-либо из вышеперечисленных пунктов для вашей диссертации, мне кажется, что у вас есть богатая тема, и вы должны делать больше, чем просто придумывать простые тесты. Возможно, вам следует начать с некоторых тестов, сравнить производительность браузера и настольного компьютера, а затем попытаться изучить лучшие практики не только для выбора между браузером и десктопом, но и для написания приложений WebGL.

Существует довольно много фреймворков WebGL. Я попробовал пару, и был очень впечатлен - есть чему поучиться у них. В зависимости от ваших интересов и требований к тезисам, вас может заинтересовать их сравнительный анализ.

Каким бы ни был ваш путь, я подозреваю, что существует большое сообщество потенциальных пользователей WebGL, которые будут испытывать недостаток в информации, которую вы собираетесь исследовать.

2 голосов
/ 06 января 2011

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

Я бы сказал, что ваш предложенный список попадает в «синтетический» конецспектр сравнительного анализа;они кажутся чем-то вроде того, что было бы более полезным для разработчика WebGL / браузера с профилировщиком, чем для кого-то, кто пытается выбрать между реализациями / платформами WebGL, чтобы решить, какие приложения лучше всего запустить (см. историю тестирования OpenGL, гдевиды бессмыслицы использовались для синтетических многоугольных чисел до тех пор, пока SPECviewperf не появился и не наложил несколько реальных реальных тестовых случаев).

1 голос
/ 07 января 2011

Я не регулярно посещаю этот сайт, поэтому мне кажется забавным, что я просто прочитал ваш вопрос, потому что я также пишу свой рассказ на эту тему. Месяц назад я думал об одной и той же проблеме и решил не сравнивать различные фреймворки WebGL друг с другом в основном потому, что считаю, что основное отличие может заключаться в используемой ими математической библиотеке. Как вы сказали, я также пришел к выводу, что не должно быть разницы в частях, работающих на GPU. Сравнение WebGL с настольной графикой было тем, о чем я не думал, но это может быть полезно. Помните, что последние реализации WebGL из Chrome и Firefox по умолчанию используют DirectX через ANGLE для Windows.

Кстати, вот какой-то тест webgl: http://webgl -bench.appspot.com /

Удачи!

...