Другие языки программирования и технологии

Как найти участок кода который можно распараллелить?

Janbolat Temirov
Janbolat Temirov
2 529
Взглянуть на действия алгоритма, и подумать том как они выполняются.
Вопрос по сути и аналогичен "как смотреть?" /"как думать?" - ответ на подобные вопросы возможен только один: "естественным образом". Если индивид за годы своей жизни сам не научился делать это, то никакие ответы не даруют ему таких способностей (волшебства не бывает).

Пример, который ты точно поймешь: Задача - написать вопрос, и покакать. Ты решаешь сначала второе действие выполнить, а затем первое. Но эти действия, по их сути, независимы друг от друга: вопрос набираешь руками, а какаешь жопкой. Можно их выполнять одновременно? Можно - садишься на "философский камень", и с мобильника пишешь вопрос. Вот ты и распараллелил два важных действия (не забыв после этого подвига протереть мобилку антисептиком), и пора претендовать на должность сеньора.
Дмитрий Кучумов
Дмитрий Кучумов
70 211
Лучший ответ
Практически любой кусок кода можно распараллелить. Параллельно можно выполнять любые участки кода, независимые по результатам, ресурсам и управлению.
Вручную - тупо ищешь профилировщиком узкие места, которые нуждаются в существенном ускорении, смотришь тип параллелизма (векторный/многопроцессорный/...) и выделяешь независимые компоненты. Автоматически - нужно строить параллельно-ярусную форму графа алгоритма, тогда на одном ярусе окажутся участки, которые можно выполнять параллельно
ФQ
Фаридун Qosimov
75 081
Зависит от контекста. Вы хотите просто параллельно запускать какие-то несвязанные участки кода или хотите параллельно запустить подсчет чего-либо, например суммы элементов массива.
.? .?
.? .?
20 187
Janbolat Temirov а можешь в обоих случаях прояснить? буду превелико благодарен!
В разработке это называют чистотой.
Чистые функции, чистые блоки кода могут без проблем исполнятся параллельно.