-
Знающие люди подскажите, могут ли браузеры использовать несколько потоков для более быстрой перерисовки окна. Нужно знать для защиты курсовой. Например окно "побито" на области, каждая область обновляется в отдельном потоке. Заранее спасибо.
-
>>могут ли браузеры использовать несколько потоков для более быстрой перерисовки окна.
Для перерисовки или вывода содержимого в композитный менеджер?
-
> валя © (20.11.17 23:45)
если нужно рисовать быстро и без нагрузки на CPU - нужно использовать видеокарту, например, через direct2d.
-
> Нужно знать для защиты курсовой
При защите курсовой в данном случае стоит знать, что многопоточность только в очень редких случаях именно ускоряет работу программы.
-
Германн © (21.11.17 02:11) [3]
Многопоточность всегда ускоряет. На моем 10-и ядернике в 6-7 раз ускорение.
Главное правильно распараллелить.
-
> dmk © (21.11.17 02:17) [4]
>
> Германн © (21.11.17 02:11) [3]
> Многопоточность всегда ускоряет.
Да. Не забывай только всегда упоминать
> На моем 10-и ядернике
А это ну очень редкий случай. :)
-
>А это ну очень редкий случай. :)
Ну 4-х ядерник явление повсеместное. Ускорение 3-3,5 раза.
Не спорьте. Я на этом собаку съел :)
-
> Многопоточность всегда ускоряет.
насколько ускорится передача по com порту если ее сделать в 10 потоков?
-
>насколько ускорится передача по com порту если ее сделать в 10 потоков?
При чем тут один com-порт и распараллеливание вычислений? Я же из процессора в память параллелю. В ком-порт многозадачность не нужна насколько я понимаю.
-
> dmk © (21.11.17 15:00) [6]
> >А это ну очень редкий случай. :)
> Ну 4-х ядерник явление повсеместное. Ускорение 3-3,5 раза.
>
> Не спорьте. Я на этом собаку съел :)
главное хвостом не подавись )
дурной тон работать с графикой через CPU там где нужна производительность.
-
>дурной тон работать с графикой через CPU там где нужна производительность.
300 тысяч полигонов - 2560×1600×30 fps на 10 ядрах. Было интересно насколько потянет CPU. УРовень RivaTNT2 где-то или Voodoo 3.
И дурного ничего нет. Просто свой движок делал софтверный.
Понятно, что на OpenGL многократно быстрее.
-
> При чем тут один com-порт и распараллеливание вычислений?
при чем тут вычисления на перерисовке окна? видеокарты сейчас тоже многопроцессорные?... ну может быть, не в курсе их прогресса, тогда зачем канвас при отрисовке окон в системе локируется (закрывается критической секцией, т.е. все потоки в очереди рисовать будут)?
-
>при чем тут вычисления на перерисовке окна?
Вы странный какой-то. Весь пакет Adobe многопоточность использует.
Иллюстратор, фотошоп, премьер, афтер эффектс и т.д. и т.п.
И да, видеокарты по сути многоядерные. Вернее многоблочные.
Тысячи растеризационных блоков рисуют параллельно + шейдерные процессоры как пост эффект. Суть та же.
-
>тогда зачем канвас при отрисовке окон в системе локируется
>(закрывается критической секцией, т.е. все потоки в очереди рисовать будут)?
Synchronize - это и есть блокирование критической секцией.
-
> И дурного ничего нет. Просто свой движок делал софтверный.
свой для своего компа для себя - да, ничего дурного.
какой-то жутко специализированный софт, под который не жалко собрать отдельный комп - да, тож ничего дурного.
но если б так делались все программы, то целероны не было б смысла делать.
-
> Весь пакет Adobe многопоточность использует.
ему есть, что считать. и это программа, а не "перерисовка окна", перерисовку она тоже вряд ли "размногопоточивает".
-
-
>>Вы странный какой-то. Весь пакет Adobe многопоточность использует.
Тесты показывают, что максимум 2 ядра + 2 hyperthreading потока. Даже полноценные 4 ядра не использует по полной. Скорее всего затраты на синхронизацию данных не оправдывают себя.
Affinity photo например работает на всех 8 ядрах у меня. Но это чисто Маковский софт, тут все не как в win/linux.
>>ему есть, что считать.
Обработка 16 бит на канал - то еще развлечение с кэшем процессора.
-
> Тесты показывают, что максимум 2 ядра + 2 hyperthreading
> потока. Даже полноценные 4 ядра не использует по полной
Если про продукцию Adobe, то у меня используют. И не в тестах, а по делу.
-
>при чем тут вычисления на перерисовке окна?
>перерисовку она тоже вряд ли "размногопоточивает".
Перерисовка окна делается в Synchronize(BitBlt) или аналогичной.
В одном потоке на моем проце буфер через BitBlt перерисовывается около 950-1000 fps. Если делать отрисовку в буфере сцены скажем из 50 тысяч полигонов одним потоком, то скорость падает до 50-60 fps. Если распараллелить отрисовку в буфер на все ядра, то скорость возрастает до 400 fps. А вы говорите нет ускорения. Вывод не ускоряется. Ускоряется распараллеленный рендер в буфер, а соответственно общая скорость рендер/вывод. Профит есть.
-
Adobe используют загрузку потоков на 100%. У меня по крайней мере. Adobe CC 2018.
Для этого и брал 10-и ядерник. Работает значительно быстрее чем на 4-х ядернике. То же самое с 3ds max + vray. Скорость по сравнению с 4-х ядерником в несколько раз выше.
-
> Adobe CC 2018.
> 3ds max + vray
Богатый
-
>Богатый
Сейчас уже нет. Софт конечно в копеечку влетает. Шрифтики + картиночки с фотобанка и т.п. ассеты. Я ж дизайнер. Программинг как хобби развиваю параллельно. Всякие хелперы для работы пишу. Delphi XE6 еще. Все лицензия.
-
3D Макс покупал за 114 тыр. + vray 38 тыр + 2 тыр USB-ключик.
Сейчас стоит 200 тыр. Цены жесть как растут. Adobe в год 45 тыр. ну и т.д.
На софткее есть цены кому интересно.
-
> dmk © (22.11.17 22:00) [19]
> Synchronize(BitBlt)
ты бы все таки разобрался, что именно и как ты измеряешь и как Adobe реализует прорисовку. заодно, как прорисовка сделана в современных windows.
не так сложно разобраться, кстати, все в msdn есть.
а ты продолжаешь навяливать всем подряд свой графический движок и подходы связанные с этим. 99% юзеров это не нужно, и более того, вредно. есть готовые графические движки.
это первое.
второе. допустим, юзеру таки надо изобрести свой графический движок. так какого же ляда для вывода и прорисовки рекомендовать использовать древний GDI? есть Direct2d, который гораздо эффективнее работает с примитивами и выводом этого всего. браузеры его во всю используют.
-
Eraser © (22.11.17 23:07) [24]
OpenGL у меня тоже подключается для скорости, а тк — пишу ради своих алгоритмов.
Чтобы книжечку потом детворе оставить на память. Да и вообще мы вроде в России живем, а не в США.
-
> dmk © (22.11.17 23:26) [25]
> Да и вообще мы вроде в России живем, а не в США.
а, вон оно какой поворот, ну тогда вопросов нет )
-
> то скорость возрастает до 400 fps.
такое надо смотреть не моргая, иначе много пропустишь. и монитор наверняка изнашивается.
когда-то очень давно читал статью про всякие там расчеты и кучу фпс. так вот автор сделал вывод, что возня с расчетами, их распараллеливание, оптимизация до одури и т.д., как он назвал - "математическая составляющая" дает крайне незначительный профит этих самых фпс. И я с ним согласен, поскольку прошел все эти грабли с полноэкранным приложеньицем.
> Если распараллелить отрисовку в буфер на все ядра
на все одно-два?
всё уже давным-давно изобретено видеокартомейкерами и директиксопенжлстроителями.
-
> Eraser © (22.11.17 23:07) [24]
> допустим, юзеру таки надо изобрести свой графический движок.
> так какого же ляда для вывода и прорисовки рекомендовать
> использовать древний GDI? есть Direct2d
лишаешь удовольствия повелосипедить
-
>такое надо смотреть не моргая, иначе много пропустишь. и монитор наверняка изнашивается.
Петросян нуждается в вас.
-
> dmk © (23.11.17 02:38) [29]
> Петросян нуждается в вас.
забавненько. дерзайте-с с ядрами дальше, рекомендую добавить еще два свои.
-
>дерзайте-с с ядрами дальше
Уже давно все работает.
Зачем вам хамить? Я вас даже не знаю.
-
> Если распараллелить отрисовку в буфер на все ядра, то скорость возрастает до 400 fps.
т.е. ты в своем велосипеде паралелиш все таки расчеты и формирование буфера для отрисовки, а не собственно перерисовку окна.
ее ты делаешь в одном
> Перерисовка окна делается в Synchronize(BitBlt) или аналогичной.
а отвечаешь/путаешь топиккастера что распараллеливание именно отрисовки ускоряет ее... а у него это может быть вопрос на контрольной. пичалька.
вот ты свои примеры приводишь, а нафига? кому твои проблемы/способы решения и ускорения интересны? да никому. а отвечая на вопрос ты бы должен разбить окно на области у каждого свой канвас - хендл (один на всех не прокатит, там выше упоминал, он в критической секции выполняется, а значит будет последовательно), в отдельном потоке которое он каждый и отрисовывает... в итоге должно получится единое, связанное изображение. в общем сравнивать/отвечать на то что в вопросе.
> окно "побито" на области, каждая область обновляется в отдельном потоке.
-
dmk © (22.11.17 23:02) [23]
Да, Adobe в этом году как-то антигуманно себя ведет в смысле цены за подписку.
-
>Да, Adobe в этом году как-то антигуманно себя ведет в смысле цены за подписку.
Да. Было 26 тыр, а стало 45.
>а отвечаешь/путаешь топиккастера что распараллеливание именно отрисовки ускоряет ее
Вызов BitBlt и так 950-1000 fps дает в цикле, даже в одном потоке. Зачем параллелить?
Да недопонял. Думал автор ветки буфер выводит. Но в буфере то еще рисовать надо перед выводом. И да, потоки ускоряют отрисовку в буфере. Кроме того я никому свой дижок не предлагал. Просто привел рабочий пример. Устал слушать, что что многопоточность не ускоряет ничего, если по факту распределение вычислений позволяет ускорить расчеты.
>кому твои проблемы/способы решения и ускорения интересны?
Твои программы тоже никому не интересны. Мастер, а про потоки ничего не знает. Смешно.
Приятно? Еще один хам.
-
> могут ли браузеры использовать несколько потоков для более быстрой перерисовки окна
Для перерисовки - нет. Перерисовка осуществляется в одном потоке, в главном.
> окно "побито" на области, каждая область обновляется в отдельном потоке
Не "окно", а "буфер вывода". Разделить по потокам буфер и/или работу - можно.
Но при этом нужно следить чтоб они не нарушали последовательность/очерёдность и успевали закончить работу до операции непосредственно вывода.
З.Ы. А те кто спорит с dmk просто не в курсе что именно он делает. Он и не использует никакого GDI. Кстати где же свежие сборки? Вы там сделали сайт/страницу или нет? ИШ конечно тогда был категорически не прав, но некоторое здравое зерно всё же имелося - создать свой сайт/страницу было бы лучше.
З.З.Ы. Скока десятилетий живу - никогда ещё не видел русских людей, которые покупали бы софт за деньги. :D