случаев один поток обработаем быстрее чем придумывать всякое умное
Я думаю, что речь может идти о сотнях нод в целом графе, но возможно, что и о тысячах в некоторых случаях. Навскидку. Предполагается, что инкрементальные изменения (после пользовательского ввода) будут аффектить только небольшое их количество в среднем. Но в краевых случаях может затрагивать и значительные части графа. Вообще, если ответ таков, что лучше эту задачу решать непараллельно, меня такой ответ устроит. Я в общем-то спрашиваю очень предварительные рекомендации. Просто на первый взгляд мне показалось, что вычисления на DAG имеет смысл параллелить.
1. Такое ощущение, что у вас построение графа из функций как-то перемешано в одну кучу с самими вычислениями. Я бы попытался отделить одно от другого. Скорее всего вот тут условие поставлено так, что усложняет задачу раз в сто: " Если функция обращается к значению выхода другой функции, эта функция становится зависимой от той.". Я бы попытался это условие переформулировать как-нибудь 2. без кода сложно придумывать решение 3. если граф мутирующий и меняющийся частично, если это является большой проблемой то я бы взял dag+mvcc чтобы было меньше мутабельно, либо искал бы способ как не утонуть в мутабельности и конкурентных обновлениях графа
ок, я понял, что "динамичность" графа сильно усложняет всё. Я подумаю, можно ли отказаться от данного требования в пользу более статичного. А так же то, что вероятно параллельные вычисления мне не сильно помогут. Спасибо!
ну решение в лоб - статический граф и "вкл/выкл" если определенное ребро активно или неактивно. Если можно определить заранее какие ребра могут понадобиться
В силу особенностей предметной области мне нужен именно перестраивающийся граф. Впрочем, я подумаю.
Обсуждают сегодня