マルチスレッドの効率(5)

Nスレッドのときを考える。
例えば4スレッドに6タスク投入のとき、次のような分配が考えられる。

2 2 1 1
3 1 1 1
2 2 2 0
3 2 1 0
4 1 1 0
3 3 0 0
4 2 0 0
5 1 0 0
6 0 0 0

これを出す関数を作るのにけっこうてまどった。
これを出せば、あとは確率とかかった時間を出せばよい。例えば、10個のタスクを処理するのに2〜8スレッドだと次のような効率になる。

2,0.802507
3,0.854111
4,0.884196
5,0.897109
6,0.905755
7,0.914035
8,0.921868