Я разрабатываю фрактальный исследователь в браузере, который все еще находится в стадии бета-тестирования. Общая идея состоит в том, чтобы предложить как можно более плавную навигацию. Я, конечно, использую пул веб-воркеров и разделяю каждое изображение на n частей, где n - количество доступных процессоров (navigator.hardwareConcurrency
). Каждый рабочий вычисляет и отправляет обратно ImageData. Он отлично работает с навигаторами на основе хрома (ie Chrome и MS Edge, оба показывают примерно одинаковую производительность). Safari тоже в порядке.
На Firefox это ужасно!
Среднее время вычисления на удивление примерно x8 на Firefox, количество процессоров и рабочих на моем компьютере. Итак, я подозревал, что Firefox запускает рабочих одновременно, а не параллельно, но это предположение должно быть неверным, поскольку вычисление среднего времени уменьшается пропорционально количеству активных рабочих, как показано на диаграмме.
Итак. ... Есть ли у кого-нибудь идея / объяснение?
спасибо :)
Странное решение для взлома
Попытка упростить мой код для публикации, как это любезно просили ( еще раз спасибо @Kaiido), я нашел решение ... ну, не совсем решение, скажем, это скорее хак!
Добавление где угодно в обработчике сообщений воркера пустое try {} catch {}
блок, производительность Firefox эквивалентна (а иногда и лучше :), чем Chrome.
код здесь
Пояснение?