19
февраль
2024
Оптимизация производительности Mozilla FireFox
11:20

Оптимизация производительности Mozilla FireFox

19 февраль 2024 11:20

Для старых ПК или, наоборот, новых можно заметно улучшить производительность браузера Mozilla FireFox, изменив параметры в about:config.

Компания Mozilla проводила исследования влияния системных параметров на скорость работы браузера FireFox в своём проекте Dory. В результате, установлено влияние следующих настроек, изменение значений которых уменьшает число пропущенных кадров при просмотре веб:

Параметр По умолчанию Новое значение
javascript.options.baselinejit.threshold 100 50
javascript.options.ion.threshold 1500 5000
network.buffer.cache.size 32768 65535

Мною установлено, что наибольшую прибавку в производительности при прокрутке экрана имеет параметр рендеринга шрифтов browser.display.auto_quality_min_font_size.
Для экранов низкого разрешения его значение нужно увеличивать до 1000 и выше - размер шрифта, до которого шрифты изображаются по упрощенному, ускоренному алгоритму. Для экранов высокого разрешения 2K, 4K или 8K параметр нужно уменьшить до 0 - всегда отображать шрифты в высоком качестве.

Параметр По умолчанию Новое значение
browser.display.auto_quality_min_font_size 20 0 или 1000

0 - для современных ПК и 4k,
1000 - для слабых компьютеров.

Чтобы количество параллельных потоков JavaScript соответствовало числу ядер процессора, нужно увеличить следующий параметр (вместо 4 я поставил 8 даже на слабом ПК - т.к. при многопоточности все равно скорость и плавность работы улучшается).

Параметр По умолчанию Новое значение
javascript.options.concurrent_multiprocess_gcs.cpu_divisor 4 8

В результате этих изменений снизилась загрузка процессора на сайте https://www.rbc.ru/, который использует "бегущие строки". Загрузку центрального процессора можно посмотреть в top или htop.

По поводу JavaScript, без которого невозможно представить современные веб сайты, на сайте hacks.mozilla.org написано следующее:

Firefox имеет интерпретатор, написанный на C++, и несколько уровней JIT:

  • Базовый JIT. Каждая инструкция байт-кода компилируется непосредственно в небольшой фрагмент машинного кода. Он использует встроенные кэши (IC) как для оптимизации производительности, так и для сбора информации о типах для Ion.
  • IonMonkey (или просто Ion), оптимизирующий JIT. Он использует расширенные оптимизации компилятора для создания быстрого кода для горячих функций (за счет более медленного времени компиляции).
    Базовый JIT более быстрый, но не справляется с большими объёмами кода, которые предлагают тяжелые веб сайты.
    Управление выбором того или иного интерпретатора - указанный выше параметр javascript.options.baselinejit.threshold (значение по умолчанию 100, новое значение 50).

Проверка на сайте https://browserbench.org/Speedometer2.1/ показала следующие результаты:

JIT threshold 0 50 100
Скорость, тестов в минуту 55.8 59.0 57.4

Вы можете видеть преимущество установки порога JIT, равного 50.

Продолжение: часть 2.

Источники:

Источник изображения логотипа FireFox (ClipArt):
FreeVector.com



Похожие публикации