|
24 / 24 / 5
Регистрация: 04.04.2012
Сообщений: 107
|
||||||
Parallel.ForEach эффективное использование29.10.2018, 20:01. Показов 7981. Ответов 72
Хотелось бы услышать реальный опыт использования параллельных циклов и плюсы от использования, если они есть.
Как я понимаю такие циклы надо завязывать на количество ядер процессора. Общий обычный цикл, а внутри параллельные по количеству ядер. Кусок кода "внутреннего цикла" внизу оч долгой работы > 5 ч.
0
|
||||||
| 29.10.2018, 20:01 | |
|
Ответы с готовыми решениями:
72
Распараллеливание. Parallel.ForEach
Pause и Resume в Parallel.Foreach |
|
TheGreatCornholio
1255 / 733 / 285
Регистрация: 30.07.2015
Сообщений: 2,408
|
||
| 29.10.2018, 21:10 | ||
|
Как вы себе представляете физическое параллельное чтение с диска? o_0 (если, конечно, это не что-то новомодное, что позволяет это делать) Вы пытаетесь распараллелить логику в очень узком месте. Сделайте чтение с диска однопоточным и помещайте данные в очередь (возможно ограниченного размера) на обработку, а вот ее уже параллельте как вам угодно любыми средствами. Записи на диск тоже касается - желательно чтобы и чтение и запись на диск обрабатывал один поток асинхронно.
0
|
||
|
24 / 24 / 5
Регистрация: 04.04.2012
Сообщений: 107
|
||||||||
| 29.10.2018, 21:30 [ТС] | ||||||||
Дальше не буду и комментировать
0
|
||||||||
|
TheGreatCornholio
1255 / 733 / 285
Регистрация: 30.07.2015
Сообщений: 2,408
|
|||
| 29.10.2018, 21:33 | |||
|
0
|
|||
|
24 / 24 / 5
Регистрация: 04.04.2012
Сообщений: 107
|
|
| 29.10.2018, 21:41 [ТС] | |
|
0
|
|
|
|
||||||||
| 31.10.2018, 13:46 | ||||||||
0
|
||||||||
|
24 / 24 / 5
Регистрация: 04.04.2012
Сообщений: 107
|
||
| 31.10.2018, 22:48 [ТС] | ||
|
По синтаксису так просто запускает делегат на каждую итерацию, что очень не оптимально у вас 200 итераций и ... 200 делегатов так накладные расходы сделают такой цикл дольше обычного, тогда в чем смысл. Ладно я в вопросе просил рассказать про реальный опыт вот моя табличка сначала простой цикл, потом паралл, потом простой а внутри паралл на 2, 4, 6 итераций. 00:06:26.4783393 - 1 00:07:55.2581924 - all 00:04:51.8370480 - 2 00:04:56.0815210 - 4 00:06:58.4193538 - 6 Как видно если просто заменить обычный цикл на паралл время выполнения только увеличивается
0
|
||
|
309 / 221 / 74
Регистрация: 23.05.2011
Сообщений: 981
|
|
| 01.11.2018, 01:55 | |
|
rams, Вам выше посоветовали узнать, как устроена работа с ЖД дисками.
Вкратце, Вы одновременно открываете кучу файлов и читаете из них. Из-за этого головка жёсткого диска прыгает ежесекундно по всему жёсткому диску, постоянно прерываясь и в итоге грузит очень медленно. Когда же данные грузятся по одному файлу целиком, а потом двигаются к другому, работы намного меньше: головка встала у начала файла, прочла его в память, потом начала читать другой. Ну, немного идиллию портит фрагментация.
0
|
|
|
24 / 24 / 5
Регистрация: 04.04.2012
Сообщений: 107
|
||
| 01.11.2018, 11:47 [ТС] | ||
|
0
|
||
|
TheGreatCornholio
1255 / 733 / 285
Регистрация: 30.07.2015
Сообщений: 2,408
|
|
| 01.11.2018, 12:23 | |
|
0
|
|
|
24 / 24 / 5
Регистрация: 04.04.2012
Сообщений: 107
|
||
| 01.11.2018, 12:57 [ТС] | ||
|
https://studme.org/93857/infor... iya_faylov
0
|
||
|
TheGreatCornholio
1255 / 733 / 285
Регистрация: 30.07.2015
Сообщений: 2,408
|
|||||||||||||||||||
| 01.11.2018, 13:45 | |||||||||||||||||||
|
Но это в данном случае не важно, гораздо важнее то, что дефолтный жесткий диск не умеет читать и писать файлы параллельно.
причем это все дело уже может выполнятся параллельно используя ресурсы ПК если не по максимуму - то не по минимуму уж точно, так как (де)архиватор скорее всего не дураки писали далее здесь идет чтение
и снова чтение\запись
то есть диск уже и так нагружен неплохо, и введение лишнего потока может только навредить: как я уже упомянул,
там прочитал 4KB, там записал 10KB, и так каждый раз в разном месте, представьте что вам надо читать 5 книг и писать в 5 тетрадей параллельно? в вашем случае это скорее замедляет работу, чем ускоряет. Советы по оптимизации я уже давал. Также в случае если сама операция занимает меньше времени чем выделение на нее потоков и чем тратиться на переключения контекста, - распараллеливание, очевидно, становится не выгодным. Андерстенд?
1
|
|||||||||||||||||||
|
24 / 24 / 5
Регистрация: 04.04.2012
Сообщений: 107
|
||
| 01.11.2018, 14:18 [ТС] | ||
|
0
|
||
|
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,569
|
|
| 01.11.2018, 14:21 | |
|
0
|
|
|
24 / 24 / 5
Регистрация: 04.04.2012
Сообщений: 107
|
||
| 01.11.2018, 14:34 [ТС] | ||
|
По поводу Parallel.ForEach я пока остался на том что просто синтаксический сахар я так же могу на каждую итерацию в обычном цикле написать Task.Run();
0
|
||
|
TheGreatCornholio
1255 / 733 / 285
Регистрация: 30.07.2015
Сообщений: 2,408
|
|||
| 01.11.2018, 14:40 | |||
|
А на физическом уровне как это работает? (говорим о "дефолтном" жестком диске)
0
|
|||
|
24 / 24 / 5
Регистрация: 04.04.2012
Сообщений: 107
|
||
| 01.11.2018, 14:54 [ТС] | ||
|
0
|
||
|
TheGreatCornholio
1255 / 733 / 285
Регистрация: 30.07.2015
Сообщений: 2,408
|
||
| 01.11.2018, 14:59 | ||
|
Оба сразу! Одновременно! Нет? Вы же мне тут про параллельное чтение наваливаете вроде как.
0
|
||
|
24 / 24 / 5
Регистрация: 04.04.2012
Сообщений: 107
|
||
| 01.11.2018, 15:09 [ТС] | ||
|
Если вам надо любой ценой доказать что вы правы не напрягайтесь я с вами согласен вы правы.
0
|
||
|
TheGreatCornholio
1255 / 733 / 285
Регистрация: 30.07.2015
Сообщений: 2,408
|
|||
| 01.11.2018, 15:19 | |||
|
а в пример приводите полностью синхронную последовательность действий. Просто не люблю взаимоисключающие параграфы в рассуждениях.
0
|
|||
| 01.11.2018, 15:19 | |
|
Помогаю со студенческими работами здесь
20
Parallel.ForEach и его неадекватное поведение Parallel.ForEach что не верно? Не компилируется
Parallel foreach ожидание для каждого потока Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|
Фото: Daniel Greenwood
kumehtar 13.11.2025
|