Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2018.07.01;
Скачать: CL | DM;

Вниз

TThread   Найти похожие ветки 

 
tyui   (2016-07-06 23:04) [40]

некоторые линии рисуются после тех которые должны быть поверх.

в массиве это лежит все в строгой последовательности и в нужном порядке наложения.

из массива нужно убрать все линии которые не должны быть поверх.
после этого можно сделать не 12, а 120 потоков, которые нарисуют все не в 6 а в 600 раз быстрее. и синхронизировать их не потребуется.


 
гнек   (2016-07-06 23:09) [41]

Удалено модератором


 
Германн ©   (2016-07-07 01:22) [42]


>  можно сделать не 12, а 120 потоков, которые нарисуют все
> не в 6 а в 600 раз быстрее

С какого перепуга быстрее?


 
Германн ©   (2016-07-07 01:25) [43]


> С какого перепуга быстрее?
>

Пардон. Понял юмор про 120 потоков.. :)


 
tyui   (2016-07-07 08:37) [44]

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


 
Palladin ©   (2016-07-08 17:52) [45]

dmk где твой код то суперский, который беспрецендентно увеличивает производительность последовательной отрисовки в параллельных потоках?

и необходимо еще привести последовательный код, с которым было сравнение

иначе все это выглядит как параллельно распределенный пердеж из одной жопы в лужу


 
dmk ©   (2016-07-09 00:09) [46]

Для неверящих здесь есть EXE:
https://cloud.mail.ru/public/FoS7/vfD8TPKKh

Поставьте кол-во линий 15-25 тысяч и запустите сначала в одном потоке, потом в множестве. Там есть 2 кнопочки (360°). Включите прозрачность, чтобы текст лучше видеть.
Немного не допилено, но в целом работает.

>Palladin ©   (08.07.16 17:52) [45]
А код вам зачем? Вы же мастер!


 
dmk ©   (2016-07-09 00:17) [47]

Больше всего меня удивляет хамство. Особенно от мастеров. А кол-во потоков действительно ускоряет. Еще Sapersky в разделе Media демку выкладывал. Она там еще не стерлась вроде.


 
dmk ©   (2016-07-09 00:26) [48]

Чтобы уж точно убедится в ускорении поставьте 150 тысяч объектов и запустите.
У меня получилось 268.76 секунды в одном потоке и 45.22 секунды в 12-и потоках.


 
Германн ©   (2016-07-09 00:41) [49]


> Чтобы уж точно убедится в ускорении

Да никто в общем-то и не сомневается, что использование доппотоков способно увеличить именно скорость выполнения неких алгоритмов при использовании многопроцессорных/многоядерных систем. Вопросы только к самому алгоритму. А его не видно без кода.
Ну и
> tyui   (07.07.16 08:37) [44]
>
> чего сразу юмор?

А с чего 120 потоков будет быстрее чем 12?


 
dmk ©   (2016-07-09 00:57) [50]

Алгоритм простой:

1. Распределяем отрисовку между потоками (1-й - 0.99, 2-й 100-199 и т.д.)
2. Создаем и запускаем потоки
3. В Execute цикл 0..359.
4. Выполняем первую отрисовку и ждем флага True об окончании отрисовки всеми потоками
5. Сбрасываем флаги
6. Идем рисовать дальше по циклу

Поскольку потоки идут параллельно, то ожидание флага минимально.
На маленьком кол-ве объектов скорость увеличивается всего в 1,5-2 раза. На большом кол-ве скорость увеличивается практически до кол-ва реальных ядер.


 
Германн ©   (2016-07-09 01:06) [51]


> Поскольку потоки идут параллельно

Кто сказал что потоки идут параллельно?
Они идут параллельно-последовательно. На двухпроцессорной системе два потока могут идти параллельно, если правильно написать код. А вот три потока уже никак!
Ну разве что ОС обеспечит некую "псевдопараллельность". Но на скорость это уже либо не повлияет, либо изменит в некую сторону, но незначительно.


 
dmk ©   (2016-07-09 01:08) [52]

Просто проблема, которую пытался здесь объяснить не корректно была описана.
Потоки рисуют друг за другом 1,2,3,4 и т.д. в первом цикле, а потом иногда перескакивают
в порядке и 5-й лезет вперед 4-го. Нарушается порядок наложения. Для резултата это не важно, а визуально выглядит как слой объектов "прыгает". Вот и хотел синхронизировать последовательность, чтобы потоки не забегали вперед друг-друга. Но дискуссия вылилась в глумление.


 
Германн ©   (2016-07-09 01:15) [53]


> dmk ©   (09.07.16 01:08) [52]
>
> Просто проблема, которую пытался здесь объяснить не корректно
> была описана.

Имхо, алгоритм был придуман/реализован неправильно.


 
dmk ©   (2016-07-09 01:16) [54]

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


 
Германн ©   (2016-07-09 01:19) [55]

Тогда нафига они вообще нужны?


 
dmk ©   (2016-07-09 01:19) [56]

>Имхо, алгоритм был придуман/реализован неправильно.
Он работает.


 
dmk ©   (2016-07-09 01:22) [57]

>Зачем они нужны?!
У меня файлы растровые по несколько гигабайт. Одним потоком долго обрабатываются.
Множеством - быстро. Линии - это просто замена расчетам. Туда что угодно можно вставить.
Подвернулись линии.


 
Германн ©   (2016-07-09 01:40) [58]


> dmk ©   (09.07.16 01:22) [57]
>
> >Зачем они нужны?!
> У меня файлы растровые по несколько гигабайт. Одним потоком
> долго обрабатываются.
> Множеством - быстро.

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


 
Kilkennycat ©   (2016-07-09 07:36) [59]


> dmk ©   (09.07.16 01:22) [57]

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


 
dmk ©   (2016-07-09 10:18) [60]

>то причем здесь отрисовка?
попрактиковаться


 
dmk ©   (2016-07-09 10:25) [61]

Германн ©   (09.07.16 01:40) [58]
Выше ссылка на EXE, который работает и ускоряет. Если у вас хотя бы 2 и более реальных ядра. Хотя на 2-х ядрах ускорение минимально.



Страницы: 1 2 вся ветка

Текущий архив: 2018.07.01;
Скачать: CL | DM;

Наверх




Память: 0.58 MB
Время: 0.006 c
2-1467378535
Sonia
2016-07-01 16:08
2018.07.01
Файл в BIN и обратно


2-1467746107
dmk
2016-07-05 22:15
2018.07.01
TThread


2-1467622935
Andrey K
2016-07-04 12:02
2018.07.01
Не ищет переменную по Ctrl левая клавиша мыши.


8-1242059975
noH@ker
2009-05-11 20:39
2018.07.01
О DirectSound


15-1473276737
Тимохов Дима
2016-09-07 22:32
2018.07.01
Свой Highlighter для TSynEdit