Почему моя рабочая среда жрет так много ресурсов и как это побороть?

Идея вынашивлась долго, но наконец-то решил озвучить.

После долгих интуитивных осмысливаний и понимая, что надо смотреть, что реально творится на моей машинке, я начал с простого — посмотрел, сколько кушает 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». Еще куча внешнего софта ставят свои отгрызалки памяти — но это уже отдельный разговор.


0 комментариев

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.