Я пытаюсь понять некоторые особенности поведения Parallelize [].
Если я сделаю:
CloseKernels[];
LaunchKernels[1]
f[n_, g_] :=
First@AbsoluteTiming[
g[Product[Mod[i, 2], {i, 1, n/2}]
Product[Mod[i, 2], {i, n/2 + 1, n}]]];
Clear[a, b];
a = Table[f[i, Identity], {i, 100000, 1500000, 100000}];
LaunchKernels[1]
b = Table[f[i, Parallelize], {i, 100000, 1500000, 100000}];
ListLinePlot[{a, b}, PlotStyle -> {Red, Blue}]
Результат будет ожидаемым:
Загрузка ЦП:
![enter image description here](https://i.stack.imgur.com/e5Sds.png)
Но если ясделать то же самое, изменив функцию для оценки:
CloseKernels[];
LaunchKernels[1]
f[n_, g_] :=
First@AbsoluteTiming[
g[Product[Sin@i, {i, 1, n/2}]
Product[Sin@i, {i, n/2 + 1, n}]]];
Clear[a, b];
a = Table[f[i, Identity], {i, 1000, 15000, 1000}];
LaunchKernels[1]
b = Table[f[i, Parallelize], {i, 1000, 15000, 1000}];
ListLinePlot[{a, b}, PlotStyle -> {Red, Blue}]
Результат:
![enter image description here](https://i.stack.imgur.com/qvW5w.png)
Загрузка ЦП:
![enter image description here](https://i.stack.imgur.com/hXZoD.png)
Я думаю, что мне не хватает некоторых важных знаний о Parallelize [], чтобы понять это.
Есть подсказки?