Firefox и Direct2D ускорение: реальный выигрыш производительности

    Хочу отметить, что не смотря на то, что новость довольно старая, на хабре я не нашел о ней упоминания, не через яндекс, не через гугл.

    Итак, в конце ноября Bas Schouten опубликовал в своем блоге заметку о том, что он добавил в код браузера Firefox еще один графический бекенд, для работы с Direct2D. Direct2D — это новый API, призванный заменить давным давно устаревший и выкинутый из состава DirectX DirectDraw. Он работает в Windows 7 и Windows Vista, если ваш драйвер видео карты соответствует хотябы стандарту WDDM 1.0.

    Замеры скорости отрисовки популярных страниц показывают, что автор старался не зря :)
    image

    В той же записи есть ссылка на скомпилированный вариант Firefox с нужными патчами, и я решил посмотреть, так ли велик выигрыш от использования Direct2D.

    Во первых, хочется рассказать про работу этой SVG-шки. Это что-то! Если в версии без Direct2D, как и в других браузерах, стоить увеличить хоть одну фотографию хотябы на пол экрана, все начинает тормозить, то в версии с Direct2D, даже если все 4 изображения растянуть на весь экран (1920×1200), и одно из них двигать, то загрузка процессора остается минимальной, а передвижение очень плавным.

    Еще я решил погонять тест производительности peacekeeper, который тоже показывает впечатляющий прирост производительности:
    image
    Кстати, Google Chrome в этом же тесте оказался быстрее всего на 30%.

    Что касается реальных сайтов, наконец-то хоть в одном браузере стало возможно работать с масштабом страницы != 100% и фиксированными фоновыми картинками :) Например, сайт wii.ign.com, который назывался как пример тяжелого сайта, отлично скролится при любом масштабе, в отличии от версии без аппаратного ускорения, где он просто умирает. ( к сожалению, сейчас с этой страницы пропал фон и она перстала тормозить везде :)

    В общем, ждем от Mozilla включения кода в финальную версию Firefox 3.7, тем более Microsoft уже делало заявление, что в девятой версии Internet Explorer будет аппаратное ускорение через Direct2D, а в Опере, как известно, аппаратное ускорение будет в движке Presto 2.4.
    Поделиться публикацией
    Комментарии 67
    • НЛО прилетело и опубликовало эту надпись здесь
        +4
        О чем конкретно речь? Слышал о возможности передать код через шейдеры, но ведь у страниц нет доступа к ним.
        0
        хо-хо)) лишь на 30% быстрее хром. вообще-то это не так уж и мало. хромоюзерам нет повода для беспокойства ^_^
          +3
          Увеличил масштаб страницы на одно деление колесика в хроме и на два ФФ:
          Minefield 3.7a1pre: 1908
          Chrome 4.0.220.1: 1416

          Плюс, у хрома серьезные проблемы в таком режиме с тестом «Complex graphics».

          Трепещи, пользователь хрома!
            –8
            Chrome(v4.0.249.25) Scored:
            3563 Points
            CPU: Intel Core 2 Duo Processor E8400
            GPU: NVIDIA GeForce 8800 GTS 512MB

            увеличил именно колёсиком на 2 деления масштаб. хз почему такая разница, но вот как-то так.
            pic.ipicture.ru/uploads/091211/3pZK12Wfsq.png
              +7
              Любая разница из-за железа, естественно. У вас процессор в 2 раза мощнее моего Атлона 5200.
          +1
          а на контенте какого типа разница более всего ощутима?
          графика?
            0
            Графика с эффектами (включая фишки CSS3 типа бордеров круглых). Чуть подробнее в блоге оперовском — my.opera.com/core/blog/2009/02/04/vega
            0
            а в FF3.5.5 который в ubuntu включено по умолчанию аппаратное ускорение?
            т.к. wii.ign.com при прокрутке не совершенно тормозит
              +3
              Тут есть 2 варианта. Либо вы пропустили два упоминания про масштаб, либо для вас реакция браузера в 1 секунду не является торможением. В прочем возможен, хотя и маловероятен вариант, что у вас компьютер в 24 раза мощнее моего и там где у меня 1 кадр в секунду, у вас 24.
              • НЛО прилетело и опубликовало эту надпись здесь
                0
                У меня в опере совсем не тормозит с масштабом измененным. Гладко листает.
                  0
                  У меня счас инфаркт будет :)
                  Давайте для начала поймем, один ли мы сайт видим. Вот, что вижу я:

                  Free Image Hosting at www.ImageShack.us
                    +2
                    Именно этот сайт.
                    Опера — гладко. FF — с небольшими задержками.
                    WinXP. Athlon x2, 3800+.
                      0
                      У меня, кажется есть объяснение, почему может не тормозить в фф.
                      Если разрешение маленькое, а тем более при сильном увеличении масштаба, фон страницы не выглядывает за белый фон контента, фаерфокс делает оптимизиацию: не рисует фон вовсе и страница крутится очень плавно. Но стоит подвести к футеру, где фон выглядывает, и тормоза появляются.

                      Почему у вас не тормозит в Опере я не знаю, хотя в принципе тенденция, что в Опере тормозит меньше, есть и у меня.
                        0
                        Может дело в плагинах FF? Попробуйте по вырубать лишние.
                      +2
                      проверил у себя в опере, аналогично никаких тормозов и гладенько.
                      • НЛО прилетело и опубликовало эту надпись здесь
                          0
                          Полосой прокрутки скроллю :) На глаз, кадра 4 в секунду, от версии фф зависит слабо.
                    +1
                    В линуксе ни один браузер кроме недавно вышедшего хрома не сглаживает изображения при масштабировании. Вот и причина. Причины понятны — когда-то и дрова и софтварная реализация 2д в линуксе были ужасны. Но сейчас уже другая ситуация — в хроме сглаживание работает и все быстро.
                      0
                      А ведь действительно, вы наблюдательны, в линуксе картинки не сглаживаются при масштабировании.
                        0
                        а по-моему у меня сглаживаются…
                        версию и платформу сюда постил.
                          0
                          Ну тут не может быть никаких «по-моему». Либо сглаживает — либо нет :) Разницу не заметить сложно.
                            0
                            сглаживает :)
                              +3
                              Странно это. ни в lastest trunk ни в
                              Mozilla/5.0 (X11; U; Linux x86_64; ru; rv:1.9.2b5) Gecko/20091204 SUSE/3.6b5-2.2 Firefox/3.6b5
                              подобного результата не наблюдаю.

                              ЗЫ: смешно, но wii.ign.com сегодня обновил дизайн — теперь нет fixed background
                    0
                    Подождем пока Огнелис внедрит пропоточность для вкладок, чтоб каждая обрабатывалась отдельно. Плюс этот графический бекенд. Я думаю получим сопоставимый с хромом, в плане скорости, браузер.
                    Вопрос в том, что к тому моменту сделает хром?
                      +1
                      Будем надеятся, что нормальную работу с SVG :)
                        0
                        Ну, по скорости начальной загрузки огнелису до хрома ого-го.
                          –1
                          блин ну вот не пойму, чего реально у когото лишние10 сек решают при загрузке браузера?
                            +2
                            Да. Если в остальном производительность будет равна, я выберу то, чем могу начать пользоваться быстрее.
                            10 секунд можно простить, если понятно, ради чего.
                              0
                              Да там секунда разница максимум. А цимес весь в куче плагинов и в том, что браузер не должен зависеть от гугла или другого интернет-гиганта ИМХО.
                                0
                                Когда начинается «цимес в куче плагинов», разница как раз и достигает десятков секунд.
                                А по умолчанию разницы нет, и даже секунду при этом оправдать нечем.
                              0
                              Конечно! Представьте ситуацию, что вы очень-очень спешите куда-то и вам нужно глянуть какую-то мелочь в интернетах, а браузер не запущен :)
                          0
                          Он работает в Windows 7 и Windows Vista, если ваш драйвер видео карты соответствует хотябы стандарту WDDM 1.0.
                          т.е. большинство пользователей (ХР) не смогут оценить все прелести данной сборки, я правильно понял? Или все же…
                            +1
                            Правильно. Результаты без поддержки Direct2D в тесте peacekeeper, например, это результат той же сборки, но под XP.
                              0
                              И что вообще ни как?
                            0
                            Граждане, а где потерялся релиз Fx 3.6?! В ноябре же обещали!
                              0
                              3.6 пока ещё beta 4
                                0
                                Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2b5) Gecko/20091204 SUSE/3.6b5-2.2 Firefox/3.6b5
                                  0
                                  да кстати SVG работает на ура… про «тяжёлый сайт» ваще не понял в чём прикол.
                                    +2
                                    Ну начинается, счас у вас еще комментарии в ЖЖ будут мгновенно открываться :)
                                    Скажите, вы картинки в SVG увеличиваете хотя бы до таких размеров, или маленькие таскаете?
                                      0
                                      комментарии в ЖЖ будут мгновенно открываться
                                      Имеется ввиду «разворачиваться». Те, которые по аяксу подгружаются.
                                        0
                                        конечно!
                                        про комменты тоже не понимаю проблемы… абсолютно серьёзно.
                                      –2
                                      Build platform
                                      target
                                      x86_64-unknown-linux-gnu

                                      Build tools
                                      Compiler Version Compiler flags
                                      gcc gcc version 4.4.1 [gcc-4_4-branch revision 150839] (SUSE Linux) -Wall -W -Wno-unused -Wpointer-arith -Wcast-align -W -Wno-long-long -pedantic -fmessage-length=0 -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector -funwind-tables -fasynchronous-unwind-tables -g -Os -fno-strict-aliasing -fno-strict-aliasing -pthread -pipe -DNDEBUG -DTRIMMED -Os -freorder-blocks -fno-reorder-functions
                                      c++ gcc version 4.4.1 [gcc-4_4-branch revision 150839] (SUSE Linux) -fno-rtti -fno-exceptions -Wall -Wpointer-arith -Woverloaded-virtual -Wsynth -Wno-ctor-dtor-privacy -Wno-non-virtual-dtor -Wcast-align -Wno-invalid-offsetof -Wno-long-long -pedantic -fmessage-length=0 -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector -funwind-tables -fasynchronous-unwind-tables -g -Os -fno-strict-aliasing -fno-strict-aliasing -fshort-wchar -pthread -pipe -DNDEBUG -DTRIMMED -Os -freorder-blocks -fno-reorder-functions

                                      Configure arguments
                                      --enable-application=xulrunner --prefix=/usr --libdir=/usr/lib64 --sysconfdir=/etc --mandir=/usr/share/man --includedir=/usr/include --enable-optimize --enable-extensions=default --with-system-jpeg --with-system-zlib --with-l10n-base=../l10n --enable-xft --disable-freetype2 --enable-svg --enable-canvas --disable-tests --disable-mochitest --disable-installer --disable-updater --disable-javaxpcom --disable-crashreporter --enable-startup-notification --enable-url-classifier --with-system-nspr --with-system-nss --enable-system-cairo --enable-system-hunspell --enable-libproxy
                                        0
                                        Это первый билд на бету5, а 3.6b5 ещё нету.
                                        P.S. Хотя не исключено, что именно этот билд и станет 3.6b5/
                                    +1
                                    У кого тормозит в FF может просто у вас стоит general.smoothScroll = true?
                                    У меня если стоит true то тормозит при увеличенном масштабе, а если false то нетормозит.
                                      0
                                      У меня стоит в true, но не тормозит. Firefox 3.5.5 Windows XP.

                                      Что странно, этот сайт у меня летает, зато хабр при скролинге начинает тормозить!
                                        0
                                        у меня хабр тормозит когда комментов больше сотни. По-моему виноват этот адовый скрипт показывающий уровни комментария. Как бы его отключить прям…
                                      0
                                      Мне остается только списать разницу в скорости между тем, что получилась у меня и у вас, %username%, на тормознутость видеокарт ATI в 2D графике.
                                      Взамен хочу предложить посмотреть скорость рендеринга при увеличенном масштабе страницы на одной из последних работ студии лебедева. По крайней мере у меня на этой странице при наведении на этажи видно только первый и последний кадр. А если водить курсором вверх-вниз, становится совсем тяжко. В версии с Direct2D, понятно дело, все плавненько, ровненько :)
                                        +1
                                        да, замедляется

                                        firefox 3.5.5
                                          0
                                          в любом виде всё более чем плавненько
                                          Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2b5) Gecko/20091204 SUSE/3.6b5-2.2 Firefox/3.6b5

                                          видимо надо благодарить интель за дравйвера :)
                                          0
                                          Интересно было бы посмотреть на результаты под разными ОС. В XP и 7-ке (в отличие от Vsit-а) GDI имеет аппаратное ускорение, при условии, что драйвер видеокарты соответствует стандарту WDDM 1.1
                                            0
                                            речь ведь идет лишь о счастливых пользователях Висты и семерки — тока в них это фишка работает :(
                                            0
                                            А интересно, Direct2D это новое пришествие DirectDraw? Или просто обертка над Direct3D?
                                              0
                                              Скорее обертка над Direct3D
                                                0
                                                Это DirectDraw с интерфейсом в стиле Direct3D. DirectDraw заменили на Direct2D в DX8.
                                                0
                                                Судя по диаграмме, википедия сопротивляется прогрессу. :)
                                                  0
                                                  Какие-то очень странные результаты сравнения на тестах Peacekeeper'а.
                                                  1. Rendering. Почему нет разницы?
                                                  2. Social networking. Весьма странное название теста, но пес с ним. Результаты в принципе понятны, но в чем принципиальное отличие теста и соответственно результатов от Rendering?
                                                  3. Complex graphics. Ok.
                                                  4. Data. WTF? Откуда сумасшедший прирост?
                                                  5. DOM operations. WTF? Откуда прирост в 2 раза?
                                                  6. String operations. Ok.

                                                  У кого-то есть логичное объяснение?
                                                    0
                                                    Могу ответить про рендеринг. То, что результаты примерно одинаковые, это скорее недостаток теста, который по таймеру запускает обработку кадров, а как известно разрешение таймера в виндовс 17 миллисекунд. Т.е. в обоих случаях ФФ успевает отрисовывать сцену в отведенное время. Во время тестов я поглядывал на загрузку процессора, все остальные тесты грузили его примерно одинаково и более менее полностью, но в Rendering был очень хорошо заметна разница, при аппаратном ускорее он был почти свободен.
                                                    0
                                                    Зашёл сейчас из-под этой сборки. В целом да, скорость прокрутки увеличилась. Включился правда ClearType, а также, при нажатии средней кнопкой мыши в свободном месте страницы (для прокрутки), не появляется круга со стрелками, а прокрутка работает.
                                                      0
                                                      Забавно wii.ign.com сегодня обновил дизайн — теперь нет fixed background.
                                                      Для дальнейшей фалометрии подойдет — прозумленный knotes.ru/ (тормозит он куда меньше старого ign, но… тоже тормозит (речь идет о Firefox под Windows )
                                                        +1
                                                        Тогда уж этот.
                                                          0
                                                          я сейчас под линуксом, но похоже, что да.
                                                          0
                                                          Я тут немного поправил шаблон knotes.ru — он случайно тормозить меньше не стал?
                                                            0
                                                            Да, с тех пор как новый фон тормозит меньше.
                                                          0
                                                          На работе в нетбуках с интегрированной видеокартой (у всех, к которым я присматриваюсь, стоит Intel GMA 950) это не должно никак сказаться?

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

                                                          Самое читаемое