После запуска бета-версии в начале сентября, от первой волны обратной связи, мы поняли, что большое количество пользователей было обращенным к сменным проблемам совместимости в Google Chrome. Они включали видео Adobe Flash, не играя, так же как различные проблемы производительности браузера с загрузкой Adobe PDF document и Adobe Flash. Была даже проблема, где браузер использовал 100%-ый ЦП, когда пользователи взаимодействовали с плагинами.
Это – точно вид обратной связи, которую мы ожидаем от запуска бета-версии. Мы инвестировали большое усилие в автоматизацию тестирования совместимости на большое количество веб-страниц, но нет ничего как фактическая пользовательская обратная связь. Мы впечатлены пользовательским ответом на бета-версию и качество зарегистрированных отчетов об ошибках. Ничто больше мотивации чем много пользователей, ждущих Вашей работы.
Одной из больших проблем была поддержка PDF Быстрое Web-представление, которое является возможностью к веб-серверу к подаче байта документ в формате PDF. Это позволяет клиенту запрашивать определенные диапазоны байта в файле, в то время как страницы пропуска, которые не необходимы. Это поддерживается в общем seekable потоковой спецификацией в NPAPI, который теперь реализует Google Chrome. Это должно улучшить производительность с большими файлами PDF или любым другим контентом, поданным, используя Быстрое Web-представление.
Мы хорошо провели время, устраняя другие проблемы также, и здесь являемся историями позади нескольких их.
Остановка видео YouTube после шесть ищет попытки:
Мы получили несколько отчетов видео YouTube, бывших не в состоянии играть. Много докладов указывали, что этот признак имел некоторое отношение к использованию слайдера, играя видео. Однако, у нас не было надежного сценария, чтобы воспроизвести в этом внутреннем.
Рыбак Darin заметил, что, если Вы перемещаете слайдер много раз, видео прекратило играть. Кроме того он узнал, что, если бы слайдер был перемещен точно шесть раз, видео прекратило бы играть. Это было интересно, потому что Google Chrome использует максимум 6 HTTP-соединений на хост.
Быстрая проверка ‘Состояния ввода-вывода в about:net работе показала, что все соединения были активными. Вопрос тогда стал, один из почему существующие соединения не были отменены, когда слайдер был перемещен.
Darin нашел, что Флеш плагин возвратит ошибку, когда мы предоставляли это данные, в то время как слайдер был перемещен. В этом случае браузер, как предполагается, отменяет соединение, и это – то, что фиксировало это.
Перетаскивание диаграммы Финансов Google:
Этот отчет был очень интересен, вследствие того, что он только произошел на одноядерных машинах. Конечно, в конце мы узнали, что не было никакого прямого подключения между первопричиной и одноядерными машинами. В окнах плагина Google Chrome, живых в отдельном сменном процессе, таким образом, плагин имеет небольшое или никакое влияние на поток браузера, или таким образом, мы думали.
После некоторого контроля мы узнали это, когда плагин получает ввод мыши, браузер основные вращения потока с 100%-ым ЦП для когда-то. Теперь, скручивание к истории – то, что, так как сменное окно – дочерний элемент окна браузера, распараллельте вводы браузера, и плагин присоединены.
Мы начинали смотреть на цикл сообщения браузера более близко. Скоро мы обнаружили, что API MsgWaitForMultipleObjects/PeekMessage вели себя странно, когда вводы потока присоединены. API MsgWaitForMultipleObjects обычно используется, чтобы блокировать до события, или сообщение окон, такое как ввод доступно для обработки. В этом случае мы нашли, что это возвращало индикацию, которую входное событие было доступно для обработки, в то время как PeekMessage указал, что никакое событие не было доступно.
Это поведение состоит, вероятно в том вследствие того, что вводы потока присоединены, и GetQueueStatus, названный внутренне MsgWaitForMultipleObjects, возвратил индикацию, которые вводят, доступно в потоке браузера, в то время как в действительности это было предназначено для плагина. Это вызвало MsgWaitForMultipleObjects не, делают его намеченную функцию ожидания, и заставил поток браузера вращаться.
Они – только несколько примеров bugfixes, который мы сделали к Google Chrome, чтобы решить проблемы производительности, связанные с плагинами. Мы продолжаем пристально смотреть на производительность Google Chrome, и в целом и относительно взаимодействия с плагинами, удостоверяться, что пользователи получают лучший опыт просмотра, который мы можем поставить.