すべてのノードに id (ノード番号)、子のリスト、負債インジケーターがあるノード ツリーがあります。次に、債務を見つけるノードのリストが与えられます。これを行うには、再帰関数を使用します。
これはすべて問題なくダンディですが、プロセスをスピードアップしたいと思います。マルチプロセッシングについて調べてみたのですが、他のプロセスをまったく使わない場合に比べて、実行するたびに計算時間が増えます (プロセス数が多いほど、実行時間が長くなります)。
私のコードは、多くの異なる例を理解しようとしているがらくたのように見えるので、代わりにこの疑似コードを投稿してください。
class Node:
id = int
children = int[]
debth = int
function makeNodeTree() ...
function find(x, node):
for c in node.children:
if c.id == x: return c
else:
if find(x, c) != None: return result
return None
function main():
search = [nodeid, nodeid, nodeid...]
timerstart
for x in search: find(x, rootNode)
timerstop
timerstart
<split list over number of processes>
<do some multiprocess magic>
<get results>
timerstop
compare the two
あらゆる種類のツリーサイズを試して、利益があるかどうかを確認しましたが、そのようなケースをまだ見つけていないため、何か間違ったことをしていると思います。私が求めているのは、マルチプロセッシングを使用して、パフォーマンスを向上させてこのトラバーサルを行う例/方法だと思います。
このタスクを簡単にするためにノードを整理する方法がたくさんあることは知っていますが、可能であれば (?) パフォーマンスの向上を確認したいと思います。