Что при работе съедает больше всего памяти и процессорные ресурсы? Как оказалось — браузер. И в эпоху мультизадачности и браузерных операционных систем это уже невесело… Что делать и как быть?
Идея вынашивлась долго, но наконец-то решил озвучить.
После долгих интуитивных осмысливаний и понимая, что надо смотреть, что реально творится на моей машинке, я начал с простого — посмотрел, сколько кушает Windows 7 после старта FAR'а, Firefox'а и пары мелких аппликешнов из контрол-панели.
Task-manager сказал: «Выделено 1070 / 2038» (метров).
Уже попа — на моем втором ноуте всего гиг… То есть после загрузки он сожрет все, а мне же еще и работать надо, господа. Помню в старые добрые времена Винда нумер 4 откушивала 300-400 метров, не боле, и то уже матерились, а тут… Хотя мы еще ничего не делали! А уже памяти ни к черту…
Ладно, пока оставим первоначальную картинку. Посмотрим как я работаю — а это получается с 10-15 табов в браузере, 3-4 ssh, пара ФАРов, gvim пара штук. WinAmp, Skype — ну вроде вроде все.
Скайп кушает 35-45 метров — учтем, что немало.
FAR'ы и ssh: у меня один FAR кушает 1.7 мега. Можно пока пренебречь — их все равно не урезать никак. А нам надо что-то менять, ибо так жить нельзя. VIM'ом тоже не оптимизировать — другие редакторы жруть так, что мама не горюй.
Winamp — пропустим, использую не часто, тем более на работе. Не критично. Либо в свопе висит — тогда не мешает, либо активен — но тогда я его слушаю и ни на что больше не реагирую.
Остается Firefox. Да еще с 15 табами.
А каждая таба работает независимо от другой, независимо от того, вижу я ее или нет. Пример очень простой из жизни — были открыты 3 табы с видео (2 серии одного фильма, и еще трейлер). Все остановлены. И тут система падает.
Ок, перегружаемся, сессия восстанавливается… Ура, мы имеем параллельно 3 говорящих видео!!! У меня уха-то два, а три видео в меня параллельно уж точно не влезет. Кто такое придумал, или, скорее, просто проимел — теперь не имеет значения. Это один мой реальный пример.
А теперь посмотрим дальше.
На странице куча анимации в виде рекламы (гифы), еще куча флэша — а эта гадюка, уж извините, слов других нет — жрет проц и память немерянно.
Теперь смотрим: например у нас на страничке грубо говоря 5 баннеров.
Умножим на мои 15 табов.
Уже 75. И все работают одновременно.
А я смотрю-то только на один. Ну ладно, с учетом всего я смотрю пусть одновременно на все 5 на одной странице. Зачем мне крутить, анимировать, озвучивать все остальные 70 штук?!
Раньше я просто отключал флэш. Но ведь иногда оно надо — включаешь — имеешь по морде… Комп виснет от перегруза за счет ненужного свопа, вычислений, т.п. Да, я знаю, есть кой-какие плагины, которые включают флэш по клику на конкретной фишке. Но мы-то хотим жить так, чтоб нам во-первых показывали только то, что мы видим и не накручивали у нас за спиной, и, во-вторых, не дай бог еще и кликать на каждой флэшке, чтоб ее включить чтоб посмотреть — неудобно и глупо.
Из всего перечисленного вывод простой — усеру надо показывать только то, что он реально может видеть — то есть то, что на экране. То, что за экраном — ему не нужно. Не надо отжирать ресурсы процессора, память и дисковые операции — а их становится катострофически много при недостатке памяти, если куча флэшей конкурируют за нее — это чистый своп в цикле вплоть до перезагрузки машины. Немного утрирую, но в первой КДЕ (давно это было) именно так и работало — машина не реагировала ни на что — только читала и писала на диск — кнопка РЕСЕТ спасала. Неужто возвращаемся к тем же временам?
В школе я еще компа не видел — писал код на программируемом калькуляторе, на нашей Электроника-МК61. Так реально у меня ноут сейчас иногда тормозит сильнее, чем калькулятор.
Как решать?
Во-первых, с радостью вспоминается режим ранних коммуникаторов — режим freeze. Почему бы его не использовать просто для невидимых табов?
Это же очевидно — ну не могу я смотреть видео на табе если он скрыт. Надо притормозить процесс и не парить мозг ни мне, ни компу.
Реклама? Так те же анимационные гифы — в нуль. И флэш туда же.
Есть еще половинчатый вариант — у большинства браузеров есть фишка «восстановить сессию» — при большом числе открытых вкладок совсем не гут их все параллельно грузить, ведь вам они все 15 штук в одну секунду не нужны же? Так почему бы например не сделать так, чтоб табчик (заголовок) отображается, а контент — пока не ткнули — нет? Т.е. тянем в первую очередь активный таб, а потом, если есть время и пустое окно трафика — тянем остальное в бэкграунде, но не мешая активному табу, то бишь on-demand.
Я так думаю, что хотя бы 30% быстродействия мы этим отвоюем.
Это просто по опыту открывания-закрывания страничек и т.п., я код для оптимизации не писал, ибо тогда бы уже не идеи выдавал, а готовое решение.
Мне интересно, может я уже повторяю проторенные пути, но не нашел их в дебрях паутины, и тогда может кто подскажет как с этим бороться?
А если никто об этом не думал — будет повод задуматься разработчикам?
Тем не менее предлагаю данные мысли на ваш суд.
PS. Да, еще можно отключать ненужные сервисы — еще путь экономии, но неиспользуемые сервисы и так висят в списке «on demand». Еще куча внешнего софта ставят свои отгрызалки памяти — но это уже отдельный разговор.
Идея вынашивлась долго, но наконец-то решил озвучить.
После долгих интуитивных осмысливаний и понимая, что надо смотреть, что реально творится на моей машинке, я начал с простого — посмотрел, сколько кушает Windows 7 после старта FAR'а, Firefox'а и пары мелких аппликешнов из контрол-панели.
Task-manager сказал: «Выделено 1070 / 2038» (метров).
Уже попа — на моем втором ноуте всего гиг… То есть после загрузки он сожрет все, а мне же еще и работать надо, господа. Помню в старые добрые времена Винда нумер 4 откушивала 300-400 метров, не боле, и то уже матерились, а тут… Хотя мы еще ничего не делали! А уже памяти ни к черту…
Ладно, пока оставим первоначальную картинку. Посмотрим как я работаю — а это получается с 10-15 табов в браузере, 3-4 ssh, пара ФАРов, gvim пара штук. WinAmp, Skype — ну вроде вроде все.
Скайп кушает 35-45 метров — учтем, что немало.
FAR'ы и ssh: у меня один FAR кушает 1.7 мега. Можно пока пренебречь — их все равно не урезать никак. А нам надо что-то менять, ибо так жить нельзя. VIM'ом тоже не оптимизировать — другие редакторы жруть так, что мама не горюй.
Winamp — пропустим, использую не часто, тем более на работе. Не критично. Либо в свопе висит — тогда не мешает, либо активен — но тогда я его слушаю и ни на что больше не реагирую.
Остается Firefox. Да еще с 15 табами.
А каждая таба работает независимо от другой, независимо от того, вижу я ее или нет. Пример очень простой из жизни — были открыты 3 табы с видео (2 серии одного фильма, и еще трейлер). Все остановлены. И тут система падает.
Ок, перегружаемся, сессия восстанавливается… Ура, мы имеем параллельно 3 говорящих видео!!! У меня уха-то два, а три видео в меня параллельно уж точно не влезет. Кто такое придумал, или, скорее, просто проимел — теперь не имеет значения. Это один мой реальный пример.
А теперь посмотрим дальше.
На странице куча анимации в виде рекламы (гифы), еще куча флэша — а эта гадюка, уж извините, слов других нет — жрет проц и память немерянно.
Теперь смотрим: например у нас на страничке грубо говоря 5 баннеров.
Умножим на мои 15 табов.
Уже 75. И все работают одновременно.
А я смотрю-то только на один. Ну ладно, с учетом всего я смотрю пусть одновременно на все 5 на одной странице. Зачем мне крутить, анимировать, озвучивать все остальные 70 штук?!
Раньше я просто отключал флэш. Но ведь иногда оно надо — включаешь — имеешь по морде… Комп виснет от перегруза за счет ненужного свопа, вычислений, т.п. Да, я знаю, есть кой-какие плагины, которые включают флэш по клику на конкретной фишке. Но мы-то хотим жить так, чтоб нам во-первых показывали только то, что мы видим и не накручивали у нас за спиной, и, во-вторых, не дай бог еще и кликать на каждой флэшке, чтоб ее включить чтоб посмотреть — неудобно и глупо.
Из всего перечисленного вывод простой — усеру надо показывать только то, что он реально может видеть — то есть то, что на экране. То, что за экраном — ему не нужно. Не надо отжирать ресурсы процессора, память и дисковые операции — а их становится катострофически много при недостатке памяти, если куча флэшей конкурируют за нее — это чистый своп в цикле вплоть до перезагрузки машины. Немного утрирую, но в первой КДЕ (давно это было) именно так и работало — машина не реагировала ни на что — только читала и писала на диск — кнопка РЕСЕТ спасала. Неужто возвращаемся к тем же временам?
В школе я еще компа не видел — писал код на программируемом калькуляторе, на нашей Электроника-МК61. Так реально у меня ноут сейчас иногда тормозит сильнее, чем калькулятор.
Как решать?
Во-первых, с радостью вспоминается режим ранних коммуникаторов — режим freeze. Почему бы его не использовать просто для невидимых табов?
Это же очевидно — ну не могу я смотреть видео на табе если он скрыт. Надо притормозить процесс и не парить мозг ни мне, ни компу.
Реклама? Так те же анимационные гифы — в нуль. И флэш туда же.
Есть еще половинчатый вариант — у большинства браузеров есть фишка «восстановить сессию» — при большом числе открытых вкладок совсем не гут их все параллельно грузить, ведь вам они все 15 штук в одну секунду не нужны же? Так почему бы например не сделать так, чтоб табчик (заголовок) отображается, а контент — пока не ткнули — нет? Т.е. тянем в первую очередь активный таб, а потом, если есть время и пустое окно трафика — тянем остальное в бэкграунде, но не мешая активному табу, то бишь on-demand.
Я так думаю, что хотя бы 30% быстродействия мы этим отвоюем.
Это просто по опыту открывания-закрывания страничек и т.п., я код для оптимизации не писал, ибо тогда бы уже не идеи выдавал, а готовое решение.
Мне интересно, может я уже повторяю проторенные пути, но не нашел их в дебрях паутины, и тогда может кто подскажет как с этим бороться?
А если никто об этом не думал — будет повод задуматься разработчикам?
Тем не менее предлагаю данные мысли на ваш суд.
PS. Да, еще можно отключать ненужные сервисы — еще путь экономии, но неиспользуемые сервисы и так висят в списке «on demand». Еще куча внешнего софта ставят свои отгрызалки памяти — но это уже отдельный разговор.