Ярлыки

понедельник, 10 января 2011 г.

Сравнение потребления памяти различными браузерами.

Сегодня я расскажу, что получилось из моей давней идеи скормить каждому более-менее популярному браузеру, до которого руки дотянутся, сотню-другую вкладок, и посмотреть, сколько памяти он сожрет.

Для сих целей был взят TOP-1000000 сайтов по версии Alexa, из него выбрано первые 120 и положены в файл links.txt. Затем товарищ Voker57 помог скриптом на Ruby, читавшим этот файл, запускавшим указанный браузер и после загрузки страницы грепавшим список процессов (ps aux) по соответствующему имени. Сумма значений в столбцах, соответствующих RSS, и считалась потреблением памяти соответствующего браузера. Таким образом, учитывалась многопроцессность Chromium'а и процесс operapluginwrap Оперы. Отдельно стоит отметить, что данные результаты, возможно, завышены на 10-15% по сравнению с тем, что ты, мой читатель, можешь увидеть в своем process manager'е.

Тестировались:

  • Arora 0.10.2-r1
  • Chromium (chromium-bin-5.0.376.0_p44230) (без аддонов)
  • Firefox 3.6.3 (без аддонов)
  • LeechCraft 0.3.65-830-g57e30dc (полный боекомплект)
  • Midori 0.2.4
  • Opera 10.10-r1 (более свежие версии неработоспособны вообще) (без всяких довесков)
  • Rekonq 0.4.0
  • uzbl 2010.04.03 (без скриптов, поставка по умолчанию)

Конфигурация «тестового стенда»:

  • CPU: Core 2 Duo P8700 (2.53 GHz)
  • RAM: 4 GB DDRII
  • GPU: nVidia GTX240M (nvidia-drivers-195.36.15)
  • ОС: Gentoo Unstable AMD64
  • Ядро: gentoo-sources-2.6.32-r2
  • Qt: 4.6.9999 от 23 апреля с kde-patches
  • DE: KDE 4.4 со стилем Bespin и включенными красивостями, весьма требовательными к OpenGL.
  • Webkit-gtk: 1.1.15.4
  • CFLAGS="-O2 -march=core2 -pipe -floop-interchange -floop-strip-mine -floop-block -fomit-frame-pointer -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1"
    LDFLAGS="-Wl,-O1 -Wl,--as-needed"

Я также попытался протестировать Konqueror, но не смог заставить его открывать URL'ы в одном и том же окне.

Во всех браузерах использовались настройки по умолчанию.

Arora

Так получилось, что тестирование браузеров началось именно с Arora (на нем отлаживался соответствующий скрипт). Никаких особых замечаний нет, вполне вменяемо. Росло себе потребление памяти и росло, между вкладками переключаться можно было, особого замедления при большом количестве вкладок заметно не было. 400 мегабайт оперативки занято на 50-ой вкладке.

Chromium

Хромиум реактивен, засранец, хоть и -bin. Однако, также реактивно засирает оперативную память: чтобы занять гиг оперативки, ему потребовалось всего 22 вкладки. Зато, что странно (ну или забавно) на уровне 2500-2600 мегабайт потребление памяти почти перестало расти. Также, при большом количестве вкладок невозможно перемещаться между ними: на табах перестали быть видны фавиконки, а затем таббар и вовсе наехал на кнопки закрытия/сворачивания. Как следствие невидимых фавиконок, невозможно понять, загружена текущая страница, или нужно еще подождать. Но хромиум все равно реактивен, стоило нажать и зажать Сtrl+W, как все открытые вкладки довольно шустро закрылись. Причем, все работает не только шустро, но и гладко.

Firefox

С ростом количества вкладок начало все тормознее и тормознее перерисовываться окошко. Но вкладки тоже быстро закрылись. 400 мегабайт за 42 что ли вкладки. Что еще сказать? Да нечего, файрфокс все знают, хехе.

Кстати, Firefox адски течет. Даже с одной вкладкой с GMail'ом он за пару часов разрастается от милой стомегабайтной программы в трехсотметрового монстра.

LeechCraft

Личкрафтам я уделю несколько особое внимание, не зря же я их девелопер :) В частности, протестированы несколько различных конфигураций потребления памяти: дефолтовая и минимальная. 400 метров в дефолтовой тоже на 42-ой вкладке. Причем, личкрафтам было весьма пофиг на количество открытых вкладок — можно было спокойно переключаться между ними, особенно с помощью Tab++. После открытия 120 вкладок «Закрыть все кроме этой» отработало секунд за 5.

Другая конфигурация потребления памяти — с увеличенными вдвое кешами. При небольшом количестве вкладок потребление памяти выше на несколько десятков мегабайт, однако, начиная примерно с 80-ого сайта, конфигурация с увеличенным кешем потребляет даже меньше памяти.

При этом были запущены все доступные (и более-менее рабочие) на сегодняшний день плагины, от торрентов и новостной читалки до DC-клиента. Полный боевой комплект, заранее ставящий личкрафт в чуть более худшее положение. Однако, это не помешало уступить лишь Arora.

Midori

Выглядит он страшно, конечно, да и после четвертого десятка вкладок стали заметны тормоза перерисовки. На 56-ую вкладку рендеринга окна я дожидался где-то минуту. Не дождался, убил, так что Midori дисквалифицирован.

Opera

Ой, какой ужас, какой ужас. Жрет память она почти как хром, выглядит уродливо, поломан диалог сохранения файлов... Впрочем, куда-то я не туда пошел. Так вот, опера на достаточно большом количестве вкладок (70-80) стала ужасно тормозить, процесс operapluginwrap кушал 100% одного ядра, основной opera стабильно ел 60-70% другого. Переключение вкладок занимало десяток-другой секунд, а после 108 вкладок Opera вообще перестала реагировать на какие-либо действия, посему она и была дисквалифицирована. Закрытие всех вкладок кроме активной (после открытия 108) затянулась минуты на три. Однако, надо признать, при небольшом количестве вкладок она ведет себя вполне достойно и, вообще говоря, при 1-2 открытых сайтах потребляет меньше всех памяти, что легко видеть из первого графика.

Rekonq

Ничотак. Странные колебания потребления памяти в районе 400-600 метров. Еще обнаружился забавный глюк: начиная этак с 70-ой вкладки для того, чтобы процесс загрузки и рендеринга шел, нужно либо двигать мышкой над окном реконка, либо перемещать туда-сюда фокус. 400 метров за 9 вкладок. После открытия 120 вкладок при нажатии и удержании Ctrl+W они стали весьма шустро закрываться обратно, но счастье длилось недолго: упал реконк.

uzbl

Стало интересно, как будет вести себя браузер, вроде как и минималистичный, но в то же время на вебките. В общем, 400 метров он за 5 вкладок съел, вот. Ну и вообще довольно жадный. На 57 вкладке у меня кончилась свободная оперативка, я решил не баловаться со свопом и прибил его. Disqualified. Несмотря на это, uzbl все же был довольно отзывчив (пока не начал подбираться к пределу ОЗУ). Не хромиум, конечно, но по сравнению с оперой — ракета.

Выводы

А глобального вывода нет. Все зависит от стиля работы в интернете. Если ты любишь держать не больше дюжины вкладок, то не особо важно, каким именно браузером ты пользуешься: главное, чтобы было удобно/привычно/etc. Разве что, пожалуй, уж точно не стоит пытаться использовать Rekonq: он потребляет ощутимо больше памяти, чем другие, сравнимо с Chromium, а какая выгода от него — непонятно.

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

Если же у тебя нередко открыто более сотни страниц, то Chromium и, уж тем более, Opera (за счет ее тормозов, хоть и ест меньше) — не вариант. Midori отпадает еще на полсотне вкладок с тормозами прорисовки, несмотря на весьма разумное потребление памяти. Как ни странно, остаются Arora и LeechCraft. Еще есть Firefox, но Gecko течет чуть сильнее (вместе со всеми огнелисовскими дополнениями и обвязками вокруг него, типа XUL), чем Webkit. Не буду отрицать, что Webkit еще есть, где пилить и доводить до ума, поэтому иногда Firefox — единственный вариант.

А uzbl ни в какие ворота не лезет во всех случаях.

источник

Комментариев нет:

Отправить комментарий