Веб-воркеры - firefox по сравнению с хромом (Chrome и MS Edge) - PullRequest
1 голос
/ 26 мая 2020

Я разрабатываю фрактальный исследователь в браузере, который все еще находится в стадии бета-тестирования. Общая идея состоит в том, чтобы предложить как можно более плавную навигацию. Я, конечно, использую пул веб-воркеров и разделяю каждое изображение на n частей, где n - количество доступных процессоров (navigator.hardwareConcurrency). Каждый рабочий вычисляет и отправляет обратно ImageData. Он отлично работает с навигаторами на основе хрома (ie Chrome и MS Edge, оба показывают примерно одинаковую производительность). Safari тоже в порядке.

На Firefox это ужасно!

bench chart

Среднее время вычисления на удивление примерно x8 на Firefox, количество процессоров и рабочих на моем компьютере. Итак, я подозревал, что Firefox запускает рабочих одновременно, а не параллельно, но это предположение должно быть неверным, поскольку вычисление среднего времени уменьшается пропорционально количеству активных рабочих, как показано на диаграмме.

Итак. ... Есть ли у кого-нибудь идея / объяснение?

спасибо :)

Странное решение для взлома

Попытка упростить мой код для публикации, как это любезно просили ( еще раз спасибо @Kaiido), я нашел решение ... ну, не совсем решение, скажем, это скорее хак!

Добавление где угодно в обработчике сообщений воркера пустое try {} catch {} блок, производительность Firefox эквивалентна (а иногда и лучше :), чем Chrome.

код здесь

Пояснение?

1 Ответ

0 голосов
/ 05 июня 2020

Это было ошибкой в ​​Firefox с их оптимизатором.
Я открыл проблему их системы отслеживания ошибок, и теперь она исправлена ​​в последней версии Nightly (79.0a1 ( 2020-06-04)).

...