Я выполнил кучу цифр на рисовании, сделанном в HTML, и рисовании на холсте. Я мог бы сделать огромный пост о преимуществах каждого из них, но я дам некоторые соответствующие результаты моих тестов для рассмотрения для вашего конкретного приложения:
Я создал тестовые страницы Canvas и HTML, у обоих были подвижные "узлы". Узлы холста были объектами, которые я создал и отслеживал в Javascript. Узлы HTML были <div>
с, хотя они также могли быть <image>
или <video>
.
Я добавил 100 000 узлов к каждому из моих двух тестов. Они выступили совсем по-другому:
Вкладка теста HTML загружалась вечно (по времени чуть меньше 5 минут, Chrome попросил убить страницу в первый раз). Менеджер задач Chrome говорит, что вкладка занимает 168 МБ. Когда я на него смотрю, это занимает 12-13% процессорного времени, когда я не смотрю, 0%.
Вкладка Canvas загружается за одну секунду и занимает 30 МБ. Это также занимает 13% процессорного времени все время, независимо от того, смотрит на него кто-то или нет.
Перетаскивание на HTML-странице происходит более плавно, что, как я полагаю, ожидается, поскольку текущая настройка заключается в перерисовке ВСЕХ каждые 30 миллисекунд в тесте Canvas. Для этого есть много оптимизаций для Canvas. (аннулирование холста является самым простым, также отсечение областей, выборочное перерисовывание и т. д. зависит только от того, насколько вы хотите реализовать)
Видео на странице HTML, хотя я не двигаю объекты, на самом деле идеально гладкое .
На холсте видео всегда идет медленно, так как я постоянно перерисовываю, потому что я отключил аннулирование холста для рисования. Конечно, есть много возможностей для совершенствования.
Только рисование / загрузка * на 1022 * далеко * на 1023 * быстрее в Canvas и гораздо больше возможностей для оптимизации (т. Е. Исключить вещи, находящиеся за кадром, очень легко).