Конференция "Начинающим" » Многопоточная перерисовка окна
 
  • валя © (20.11.17 23:45) [0]
    Знающие люди подскажите, могут ли браузеры использовать несколько потоков для более быстрой перерисовки окна. Нужно знать для защиты курсовой.  Например окно "побито" на области, каждая область обновляется в отдельном потоке. Заранее спасибо.
  • tesseract © (21.11.17 00:08) [1]
    >>могут ли браузеры использовать несколько потоков для более быстрой перерисовки окна.

    Для перерисовки или вывода содержимого в композитный менеджер?
  • Eraser © (21.11.17 01:24) [2]

    > валя ©   (20.11.17 23:45) 

    если нужно рисовать быстро и без нагрузки на CPU - нужно использовать видеокарту, например, через direct2d.
  • Германн © (21.11.17 02:11) [3]

    > Нужно знать для защиты курсовой

    При защите курсовой в данном случае стоит знать, что многопоточность только в очень редких случаях именно ускоряет работу программы.
  • dmk © (21.11.17 02:17) [4]
    Германн ©   (21.11.17 02:11) [3]
    Многопоточность всегда ускоряет. На моем 10-и ядернике в 6-7 раз ускорение.
    Главное правильно распараллелить.
  • Германн © (21.11.17 02:54) [5]

    > dmk ©   (21.11.17 02:17) [4]
    >
    > Германн ©   (21.11.17 02:11) [3]
    > Многопоточность всегда ускоряет.

    Да. Не забывай только всегда упоминать

    > На моем 10-и ядернике

    А это ну очень редкий случай. :)
  • dmk © (21.11.17 15:00) [6]
    >А это ну очень редкий случай. :)
    Ну 4-х ядерник явление повсеместное. Ускорение 3-3,5 раза.
    Не спорьте. Я на этом собаку съел :)
  • sniknik © (21.11.17 15:17) [7]
    > Многопоточность всегда ускоряет.
    насколько ускорится передача по com порту если ее сделать в 10 потоков?
  • dmk © (21.11.17 20:38) [8]
    >насколько ускорится передача по com порту если ее сделать в 10 потоков?
    При чем тут один com-порт и распараллеливание вычислений? Я же из процессора в память параллелю. В ком-порт многозадачность не нужна насколько я понимаю.
  • Eraser © (21.11.17 21:32) [9]

    > dmk ©   (21.11.17 15:00) [6]
    > >А это ну очень редкий случай. :)
    > Ну 4-х ядерник явление повсеместное. Ускорение 3-3,5 раза.
    >
    > Не спорьте. Я на этом собаку съел :)

    главное хвостом не подавись )
    дурной тон работать с графикой через CPU там где нужна производительность.
  • dmk © (22.11.17 01:51) [10]
    >дурной тон работать с графикой через CPU там где нужна производительность.
    300 тысяч полигонов - 2560×1600×30 fps на 10 ядрах. Было интересно насколько потянет CPU. УРовень RivaTNT2 где-то или Voodoo 3.
    И дурного ничего нет. Просто свой движок делал софтверный.
    Понятно, что на OpenGL многократно быстрее.
  • sniknik © (22.11.17 10:25) [11]
    > При чем тут один com-порт и распараллеливание вычислений?
    при чем тут вычисления на перерисовке окна? видеокарты сейчас тоже многопроцессорные?... ну может быть, не в курсе их прогресса, тогда зачем канвас при отрисовке окон в системе локируется (закрывается критической секцией, т.е. все потоки в очереди рисовать будут)?
  • dmk © (22.11.17 10:59) [12]
    >при чем тут вычисления на перерисовке окна?
    Вы странный какой-то. Весь пакет Adobe многопоточность использует.
    Иллюстратор, фотошоп, премьер, афтер эффектс и т.д. и т.п.
    И да, видеокарты по сути многоядерные. Вернее многоблочные.
    Тысячи растеризационных блоков рисуют параллельно + шейдерные процессоры как пост эффект. Суть та же.
  • dmk © (22.11.17 11:43) [13]
    >тогда зачем канвас при отрисовке окон в системе локируется
    >(закрывается критической секцией, т.е. все потоки в очереди рисовать будут)?
    Synchronize - это и есть блокирование критической секцией.
  • KilkennyCat © (22.11.17 12:24) [14]

    > И дурного ничего нет. Просто свой движок делал софтверный.

    свой для своего компа для себя - да, ничего дурного.
    какой-то жутко специализированный софт, под который не жалко собрать отдельный комп - да, тож ничего дурного.
    но если б так делались все программы, то целероны не было б смысла делать.
  • sniknik © (22.11.17 13:00) [15]
    > Весь пакет Adobe многопоточность использует.
    ему есть, что считать. и это программа, а не "перерисовка окна", перерисовку она тоже вряд ли "размногопоточивает".
  • han_malign © (22.11.17 15:50) [16]

    > Весь веб на 60+ FPS: как новый рендерер в Firefox избавился от рывков и подтормаживаний

    https://habrahabr.ru/post/340176/
  • tesseract © (22.11.17 16:58) [17]
    >>Вы странный какой-то. Весь пакет Adobe многопоточность использует.

    Тесты показывают, что максимум 2 ядра + 2 hyperthreading потока.  Даже полноценные 4 ядра не использует по полной. Скорее всего затраты на синхронизацию данных не оправдывают себя.

    Affinity photo например работает на всех 8 ядрах у меня. Но это чисто Маковский софт, тут все не как в win/linux.

    >>ему есть, что считать.

    Обработка 16 бит на канал - то еще развлечение с кэшем процессора.
  • Игорь Шевченко © (22.11.17 17:07) [18]

    > Тесты показывают, что максимум 2 ядра + 2 hyperthreading
    > потока.  Даже полноценные 4 ядра не использует по полной


    Если про продукцию Adobe, то у меня используют. И не в тестах, а по делу.
  • dmk © (22.11.17 22:00) [19]
    >при чем тут вычисления на перерисовке окна?
    >перерисовку она тоже вряд ли "размногопоточивает".
    Перерисовка окна делается в Synchronize(BitBlt) или аналогичной.
    В одном потоке на моем проце буфер через BitBlt перерисовывается около 950-1000 fps. Если делать отрисовку в буфере сцены скажем из 50 тысяч полигонов одним потоком, то скорость падает до 50-60 fps. Если распараллелить отрисовку в буфер на все ядра, то скорость возрастает до 400 fps. А вы говорите нет ускорения. Вывод не ускоряется. Ускоряется распараллеленный рендер в буфер, а соответственно общая скорость рендер/вывод. Профит есть.
  • dmk © (22.11.17 22:04) [20]
    Adobe используют загрузку потоков на 100%. У меня по крайней мере. Adobe CC 2018.
    Для этого и брал 10-и ядерник. Работает значительно быстрее чем на 4-х ядернике. То же самое с 3ds max + vray. Скорость по сравнению с 4-х ядерником в несколько раз выше.
  • Игорь Шевченко © (22.11.17 22:24) [21]

    > Adobe CC 2018.


    > 3ds max + vray


    Богатый
  • dmk © (22.11.17 22:58) [22]
    >Богатый
    Сейчас уже нет. Софт конечно в копеечку влетает. Шрифтики + картиночки с фотобанка и т.п. ассеты. Я ж дизайнер. Программинг как хобби развиваю параллельно. Всякие хелперы для работы пишу. Delphi XE6 еще. Все лицензия.
  • dmk © (22.11.17 23:02) [23]
    3D Макс покупал за 114 тыр. + vray 38 тыр + 2 тыр USB-ключик.
    Сейчас стоит 200 тыр. Цены жесть как растут. Adobe в год 45 тыр. ну и т.д.
    На софткее есть цены кому интересно.
  • Eraser © (22.11.17 23:07) [24]

    > dmk ©   (22.11.17 22:00) [19]


    > Synchronize(BitBlt)

    ты бы все таки разобрался, что именно и как ты измеряешь и как Adobe реализует прорисовку. заодно, как прорисовка сделана в современных windows.
    не так сложно разобраться, кстати, все в msdn есть.

    а ты продолжаешь навяливать всем подряд свой графический движок и подходы связанные с этим. 99% юзеров это не нужно, и более того, вредно. есть готовые графические движки.
    это первое.

    второе. допустим, юзеру таки надо изобрести свой графический движок. так какого же ляда для вывода и прорисовки рекомендовать использовать древний GDI? есть Direct2d, который гораздо эффективнее работает с примитивами и выводом этого всего. браузеры его во всю используют.
  • dmk © (22.11.17 23:26) [25]
    Eraser ©   (22.11.17 23:07) [24]
    OpenGL у меня тоже подключается для скорости, а тк — пишу ради своих алгоритмов.
    Чтобы книжечку потом детворе оставить на память. Да и вообще мы вроде в России живем, а не в США.
  • Eraser © (23.11.17 02:11) [26]

    > dmk ©   (22.11.17 23:26) [25]


    > Да и вообще мы вроде в России живем, а не в США.

    а, вон оно какой поворот, ну тогда вопросов нет )
  • KilkennyCat © (23.11.17 02:17) [27]

    >  то скорость возрастает до 400 fps.

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

    когда-то очень давно читал статью про всякие там расчеты и кучу фпс. так вот автор сделал вывод, что возня с расчетами, их распараллеливание, оптимизация до одури и т.д., как он назвал - "математическая составляющая" дает крайне незначительный профит этих самых фпс. И я с ним согласен, поскольку прошел все эти грабли с полноэкранным приложеньицем.


    >  Если распараллелить отрисовку в буфер на все ядра

    на все одно-два?
    всё уже давным-давно изобретено видеокартомейкерами и директиксопенжлстроителями.
  • kilkennycat © (23.11.17 02:20) [28]

    > Eraser ©   (22.11.17 23:07) [24]


    > допустим, юзеру таки надо изобрести свой графический движок.
    >  так какого же ляда для вывода и прорисовки рекомендовать
    > использовать древний GDI? есть Direct2d

    лишаешь удовольствия повелосипедить
  • dmk © (23.11.17 02:38) [29]
    >такое надо смотреть не моргая, иначе много пропустишь. и монитор наверняка изнашивается.
    Петросян нуждается в вас.
  • kilkennycat © (23.11.17 03:41) [30]

    > dmk ©   (23.11.17 02:38) [29]


    > Петросян нуждается в вас.

    забавненько. дерзайте-с с ядрами дальше, рекомендую добавить еще два свои.
  • dmk © (23.11.17 04:29) [31]
    >дерзайте-с с ядрами дальше
    Уже давно все работает.
    Зачем вам хамить? Я вас даже не знаю.
  • sniknik © (23.11.17 10:27) [32]
    > Если распараллелить отрисовку в буфер на все ядра, то скорость возрастает до 400 fps.
    т.е. ты в своем велосипеде паралелиш все таки расчеты и формирование буфера для отрисовки, а не собственно перерисовку окна.
    ее ты делаешь в одном
    > Перерисовка окна делается в Synchronize(BitBlt) или аналогичной.

    а отвечаешь/путаешь топиккастера что распараллеливание именно отрисовки ускоряет ее... а у него это может быть вопрос на контрольной. пичалька.

    вот ты свои примеры приводишь, а нафига? кому твои проблемы/способы решения и ускорения интересны? да никому. а отвечая на вопрос ты бы должен разбить окно на области у каждого свой канвас - хендл (один на всех не прокатит, там выше упоминал, он в критической секции выполняется, а значит будет последовательно), в отдельном потоке которое он каждый и отрисовывает... в итоге должно получится единое, связанное изображение. в общем сравнивать/отвечать на то что в вопросе.
    > окно "побито" на области, каждая область обновляется в отдельном потоке.
  • Игорь Шевченко © (23.11.17 10:33) [33]
    dmk ©   (22.11.17 23:02) [23]

    Да, Adobe  в этом году как-то антигуманно себя ведет в смысле цены за подписку.
  • dmk © (23.11.17 11:23) [34]
    >Да, Adobe  в этом году как-то антигуманно себя ведет в смысле цены за подписку.
    Да. Было 26 тыр, а стало 45.

    >а отвечаешь/путаешь топиккастера что распараллеливание именно отрисовки ускоряет ее
    Вызов BitBlt и так 950-1000 fps дает в цикле, даже в одном потоке. Зачем параллелить?
    Да недопонял. Думал автор ветки буфер выводит. Но в буфере то еще рисовать надо перед выводом. И да, потоки ускоряют отрисовку в буфере. Кроме того я никому свой дижок не предлагал. Просто привел рабочий пример. Устал слушать, что что многопоточность не ускоряет ничего, если по факту распределение вычислений позволяет ускорить расчеты.

    >кому твои проблемы/способы решения и ускорения интересны?
    Твои программы тоже никому не интересны. Мастер, а про потоки ничего не знает. Смешно.

    Приятно? Еще один хам.
  • Вайрекс (28.12.17 21:40) [35]
    > могут ли браузеры использовать несколько потоков для более быстрой перерисовки окна

    Для перерисовки - нет. Перерисовка осуществляется в одном потоке, в главном.

    > окно "побито" на области, каждая область обновляется в отдельном потоке

    Не "окно", а "буфер вывода". Разделить по потокам буфер и/или работу - можно.
    Но при этом нужно следить чтоб они не нарушали последовательность/очерёдность и успевали закончить работу до операции непосредственно вывода.

    З.Ы. А те кто спорит с dmk просто не в курсе что именно он делает. Он и не использует никакого GDI. Кстати где же свежие сборки? Вы там сделали сайт/страницу или нет? ИШ конечно тогда был категорически не прав, но некоторое здравое зерно всё же имелося - создать свой сайт/страницу было бы лучше.

    З.З.Ы. Скока десятилетий живу - никогда ещё не видел русских людей, которые покупали бы софт за деньги. :D
 
Конференция "Начинающим" » Многопоточная перерисовка окна
Есть новые Нет новых   [134427   +38][b:0][p:0.001]