Часть 2: Google Chrome для разработчиков
Вышедший второго сентября Google Chrome успел наделать много шума и стал довольно обсуждаемой темой в блогосфере. Не меньший интерес проявили и специалисты по безопасности, в первой же версии был обнаружен ряд уязвимостей. Первая из них была обнаружена уже на следующий день. Чуть менее недели спустя Google выпустил патч для найденных критических проблем. За очень короткое время после релиза браузер отвоевал маленькую, но заметную долю рынка.
Все эти события прошли мимо меня, пока я был в отпуске. Ну и ладушки.
Поскольку появление нового инструмента в руках пользователей всегда влечет определенные проблемы для тестирования, браузер пришлось отыскать и установить. Сейчас он (официальный сайт Google Chrome) занимает третью позицию в Google (PR 0), вторую в Yahoo, третью MSN, видимо дальние позиции в Live Search и Yandex, первую в Majestic 12, а Alexa почему то найти не удалось. Хорошие показатели, на мой взгляд после восьми дней жизни.
Инсталятор, скачиваемый на компьютер, меньше полумегабайта. Правда, при установки он скачивает из Сети порядка 20 Мегабайт данных. Устанавливается не в привычные “Program Files”, а в “Documents and Settings”. Прямо скажем очень странное решение. Занимает после установки около пятидесяти мегабайт, при этом сам инсталлятор не удаляется и лежит в папке “[Version]\Installer”. Вероятно, установка следующих версий будет приводить к накоплению данных.
Судя по структуре файлов, дальше планируется появление плагинов и тем. Смущает только реализация в виде DLL.
Первым не очень понятным фактом стало то, что запущенный Chrome загружает процессор от 2 до 7% постоянно. Такого поведения не наблюдается у Internet Explorer, Firefox и Opera. Простая загрузка браузера с пустой страницей не приводит к постоянной нагрузке на процессор. Что же делает при этом Chrome? При беглом осмотре понятно не стало – к файлам обращается в меру, при этом в своей директории, реестр использует не больше остальных, в Сеть тоже постоянно не ломится. Исходный код скачивать поленился, возможно, позже всё же пересилю себя.
Интерфейс и функциональность.
Стандартный интерфейс, как и у других браузеров, только сильно урезанный или без лишних элементов, смотря с какой точки зрения подходить. Если браузер воспринимать именно как инструмент для простого просмотра страниц, то очень хорошо. У меня же вызвало смешанные чувства. Такого же эффекта можно добиться в Firefox, IE и Opera нажав F11, разница лишь в том, что при этом браузеры основной тройки разворачиваются на весь экран.
Куда интереснее поведение адресной строки при вводе ссылки.

Click!
Во-первых шрифт и поле ввода больше, чем у других браузеров. Во вторых цветами отделается домен, символы разметки, пути до страницы на сайте и имена файлов. Немного необычно, но приятно. При вводе адреса Chrome показывается в выпадающем списке возможные результаты, основанные на уже существующей истории пользователя и наиболее близких имен доменов в базе Google. Так же предлагается поискать введенную фразу в выбранном поисковике (по умолчанию Google) и посмотреть всю историю по страницам, попадающую под введенное в адресную строку. Пожалуй, этим можно было удивить в прошлом году, пока не вышел браузер Firefox 3.0. Но всё-таки хорошо, что такая возможность есть уже в первых версиях, потому как ни IE, ни Opera этого пока не сделали (поиск идет по локальной истории).В новом пустом табе (по Ctrl + T например) по умолчанию отображаются наиболее часто посещаемые сайты, а так же список недавних закладок.
Порадовал и поиск по истории браузера. Вообще функциональность очень мне понравилась, в FF и Opera существует похожая возможность, но реализована она по другому – все ячейки пользователь заполняет самостоятельно.
Совсем другой разговор, если обратить внимание на табы. Все стандартные действия поддерживаются (переключение по Ctrl + цифра, Shift, Ctrl, Shift & Ctrl + Click), табы можно менять местами, а так же вообще вытаскивать их в отдельное окно и вкладывать отдельные окна друг в друга. Анимация табулек при перетаскивании и вложении сделана приятно.
При этом, как обещает Google, зависание одного таба не скажется на остальных. Подвесить Chrome удалось легко. Было достаточно загрузить небольшой PDF документ. Пока он полностью не загрузился окно Chrome зависло и переключится на другие табы и отдельные окна не получалось. Другие приложения работали нормально. Так получается из-за того, что на самом то деле табы не являются самостоятельными процессами и запускаются от процесса ядра (это видно через Process Explorer). В результате, когда повисает главный процесс – повисает и всё остальное. Но с другой стороны, если правильно угадать, то можно убить дочерний процесс, подвесивший всё приложение, тогда действительно на других табах это не скажется. У Internet Explorer таже история, если открывать страницы не в табах, а в отдельных окнах.

Другая возможность – создание ярлыков. Любая страничка может быть помещена на рабочий стол, в меню «Пуск» или на панель быстрого запуска. В отличии от простого drug-and-drop для других браузеров, в Chrome существует дополнительный пункт меню который позволяет создать сразу все ярлыки. При этом иконка берется из favicon.ico сайта.
Запускаются такие ярлыки в отдельном окне Chrome, вообще без навигации. Впрочем, с помощью меню в заголовке окна можно переключиться в нормальный режим. Чем то напоминает Active Desktop, только окна нормальные, а не «утопленные» на заднем плане.Любопытно сделан контекстный поиск по странице. По «Ctrl + F» панелька для ввода появляется чуть ниже строки адреса. При вводе текста показывается количество соответствий и текущее положение.
История посещений и загрузок показываются в отдельном окне в виде веб страниц, с возможностью поиска. Лично мне понравилось, потому как довольно удобно использовать. К сожалению, интерактивного поиска нет (как в Firefox в истории посещений). Функция удобная, когда нет уверенности в точном названии страницы.Интересно еще и то, что иногда количество процессов было больше чем процесс ядра + количество открытых табов и окон Chrome.Я заметил еще одну приятную особенность. При открытии новых окон, они появляются не как обычно правее и ниже родительского, а чуть ниже верхней грани, по середине заголовка.
Ребята из Google добавили любопытную функцию в браузер – диспетчер задач. Вызвать диспетчер можно из контекстного меню заголовка браузера.

Производительность и стандарты.
Чисто субъективно я не заметил никакой разницы между браузерами в плане скорости загрузки страниц. Страницы с видео роликами, так или иначе, подтормаживаются при загрузке. Не было чудес и при загрузке «Google Analytics» – так же заметны подтормаживания при смене периода.Очень хорошо почувствовал разницу в скорости обработки страницы при изменении размеров текста с помощью «Ctrl + Колёсико Мышки» и Ctrl + «+/- ». Chrome работает очень быстро, практически без задержек. Но, в Chrome возможность увеличения и уменьшения текста ограничена, в отличие от Firefox. Вместе с тем, на мой взгляд, увеличение лучше работает в Internet Explorer и Opera – не портит разметку, и при этом позволяет увеличить страницу, так что на картинках будут видны пикселы.
При старте Chrome в пике съедал 40% процессора (у меня стоит AMD Athlon 3500+ 64 bit с 1 GB Dual памяти и водруженной поверх XP 32 bit с SP3). Для сравнения Firefox потреблял 35%, Internet Explorer -60%, Opera – 50%. Как уже говорилось, дальше в режиме простоя Chrome потреблял от 2 до 7% процессора. Но у Chrome наблюдается сильное преимущество по переключению контекста между потоками, хотя это не очень точно.
Тут мне стало интересно, как поведет себя Chrome при открытии нескольких табов и окон. Методику я выбрал самую простую:
- Для каждого браузера (Chrome, Firefox 2, Internet Explorer 7, Opera 9.5) открывается 10 пустых табов (то есть свежие инсталляции, без истории закладок и плагинов).
- Открывается 10 табов с одним и тем же ресурсом (я выбрал главную страницу Youtube)
- Открывается 10 отдельных окон с Youtube (окна с пустыми страницами я опустил, ничего особенного предварительные тесты не показали).
- Каждый тест повторяется 10 раз и берутся усредненные значения, если не окажется, что есть очевидные пики.Условия проведения замеров одинаковые для всех браузеров (Windows XP SP3, 32bit, Athlong 3500+, 1GB Dual RAM).В результате я получил 6 табличек cо значениями для физической и виртуальной памяти.
Потребление физической памяти на пустой выглядело так, при открытии табов:
Физическая память (MB)

| Вкладки | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| Chrome | 29* | 33 | 33 | 35 | 36 | 38 | 38 | 39 | 40 | 42 |
| Firefox | 35 | 36 | 36 | 36 | 36 | 37 | 37 | 37 | 37 | 37 |
| Internet Explorer | 23 | 27 | 28 | 30 | 30 | 31 | 32 | 33 | 34 | 35 |
| Opera | 21 | 21 | 22 | 22 | 22 | 22 | 23 | 23 | 23 | 23 |
Виртуальная память (MB)
| Вкладки | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| Chrome | 21** | 23 | 25 | 27 | 29 | 32 | 33 | 33 | 33 | 39 |
| Firefox | 26 | 26 | 27 | 27 | 27 | 27 | 27 | 27 | 27 | 28 |
| Internet Explorer | 17 | 20 | 21 | 22 | 22 | 23 | 24 | 25 | 26 | 26 |
| Opera | 18 | 18 | 18 | 19 | 19 | 19 | 19 | 20 | 20 | 20 |
А вот так память потреблялась при загрузке главной страницы Youtube, опять-таки 10 табов в одном окне:
Физическая память (MB)

| Вкладки | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| Chrome | 40 | 80 | 101 | 122 | 149 | 157 | 165 | 187 | 207 | 252 |
| Firefox | 44 | 49 | 54 | 59 | 67 | 70 | 72 | 78 | 81 | 91 |
| Internet Explorer | 39 | 51 | 60 | 71 | 78 | 88 | 99 | 108 | 115 | 127 |
| Opera | 35 | 39 | 47 | 53 | 58 | 63 | 70 | 77 | 84 | 89 |
Виртуальная память (MB)
| Вкладки | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| Chrome | 32 | 61 | 76 | 89 | 107 | 117 | 123 | 139 | 154 | 193 |
| Firefox | 35 | 39 | 44 | 50 | 59 | 61 | 63 | 68 | 72 | 82 |
| Internet Explorer | 31 | 42 | 51 | 62 | 70 | 81 | 91 | 99 | 108 | 118 |
| Opera | 32 | 37 | 44 | 51 | 56 | 61 | 68 | 75 | 82 | 87 |
Распределение памяти при открытии десяти табов с Youtube оказалось следующим:
- Chrome – нерегулярно до 30% CPU, по разным процессам.
- Firefox – постоянное использование около 20% с пиками до 50%.
- Internet Explorer – от 20% до 50%
- Opera – использование CPU колебалось в районе 30%
Интересно так же то, что распределение памяти между процессами было неоднородным и отличалось в пределах до 5 мегабайт для табов, плюс два процесса по 50 мегабайт (плюс минус 3). В отличие от Firefox и Internet Explorer, память не росла безостановочно.
Распределение памяти в случае 10 разных окон.
Физическая память (MB)
| Окна | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| Chrome | 41 | 80 | 101 | 125 | 138 | 145 | 167 | 179 | 204 | 224 |
| Firefox | 44 | 51 | 59 | 66 | 78 | 83 | 92 | 102 | 107 | 114 |
| Internet Explorer | 39 | 83 | 123 | 165 | 204 | 246 | 288 | 330 | 373 | 414 |
| Opera | 34 | 42 | 49 | 54 | 61 | 69 | 77 | 83 | 91 | 95 |
Виртуальная память (MB)
| Окна | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| Chrome | 33 | 62 | 78 | 94 | 102 | 110 | 125 | 131 | 150 | 165 |
| Firefox | 34 | 42 | 49 | 56 | 68 | 73 | 83 | 92 | 98 | 104 |
| Internet Explorer | 32 | 37 | 100 | 132 | 166 | 200 | 234 | 267 | 300 | 332 |
| Opera | 31 | 40 | 46 | 53 | 59 | 67 | 75 | 81 | 90 | 93 |
В общем и целом Chrome показал себя довольно прожорливым браузером по памяти (но в случае с окнами – намного лучше, чем Internet Explorer), но наиболее нетребовательным к процессору. При теперешнем росте объемов памяти, в принципе, не существенно. Браузер действительно должен работать быстрее, чем остальные. Пока память не закончится, конечно.
Но всё-таки, реально отдельные процессы создает только Internet Explorer, в Chrome (повторюсь), так или иначе всё завязано на главный процесс ядра.
По стандартам всё очень даже неплохо:
- Acid3
- Chrome – 79
- Opera 9.5 – 84
- Firefox 2 – 52
- Firefox 3 – 71
- Internet Explorer 7.0 – я не понял сколько, картинка была сбита полностью
Acid2
Chrome, Firefox 3, Opera 9.5 – прошли.
По сегодняшним меркам очень приличный результат, но люди говорят, что некоторые страницы разъезжаются. Так что если Chrome займёт существенную долю рынка веб разработчикам и верстальщикам всё-таки придется попотеть. Впрочем, и тестировщикам тоже (меж тем Selenium, например, все еще не поддерживает Chrome).
Закончу эту часть рассказа такой вот картинкой :)




Pingback: Часть 2: Google Chrome для разработчиков : ALSEDI Group
Pingback: Часть 2: Google Chrome для разработчиков | Alex Sergeev @ ALSEDI