11 декабря 2009 в 00:57

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.
Александр Карпинский @homm
карма
106,8
рейтинг 0,0
Например: Программист
Самое читаемое Разработка

Комментарии (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
        У меня в опере совсем не тормозит с масштабом измененным. Гладко листает.
        • 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) это не должно никак сказаться?

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