Конференция "Начинающим" » Многопоточная перерисовка окна
 
  • валя © (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. А вы говорите нет ускорения. Вывод не ускоряется. Ускоряется распараллеленный рендер в буфер, а соответственно общая скорость рендер/вывод. Профит есть.
 
Конференция "Начинающим" » Многопоточная перерисовка окна
Есть новые Нет новых   [118644   +49][b:0][p:0.001]