◆Kyubey Edison0000001
啥玩意啊咋回事啊啥毛病啊
关注数: 40 粉丝数: 1,234 发帖数: 13,857 关注贴吧数: 231
为什么ParallelTable比Table慢,ParallelMap比Map慢 这是为什么呢? Test1[System`Dump`matrix_?MatrixQ, System`Dump`y___] := Block[{System`Dump`m = System`Dump`toRaster[System`Dump`matrix]}, Developer`ToPackedArray[System`Dump`m]] Test3[System`Dump`matrix_?MatrixQ, System`Dump`y___] := System`Dump`toRaster[System`Dump`matrix] Ember`toRaster[{x___}] := ParallelMap[Ember`toRaster, {x}] Ember`toRaster[(Hue | GrayLevel | RGBColor | CMYKColor)[x_]] := x Ember`toRaster[(Hue | GrayLevel | RGBColor | CMYKColor)[x_, y__]] := {x, y} Ember`toRaster[___] := 0 Test4[w_, y___] := Developer`ToPackedArray[Ember`toRaster[w]] fn := (x + I y)^(x + I y) DistributeDefinitions[fn, Test1, Test3, Ember`toRaster, Test4] RepeatedTiming[ Test1[Table[ Hue[(Arg[fn] + \[Pi])/(2 \[Pi]), 1/(1 + 0.3 Log[Abs[fn] + 1]), 1 - 1/(1.1 + 5 Log[Abs[fn] + 1]), 1], {y, -2 + 0.0012, 2, 0.2}, {x, -2 + 0.0012, 2, 0.2}]], 120] // Short RepeatedTiming[ Test3[ParallelTable[ Hue[(Arg[fn] + \[Pi])/(2 \[Pi]), 1/(1 + 0.3 Log[Abs[fn] + 1]), 1 - 1/(1.1 + 5 Log[Abs[fn] + 1]), 1], {y, -2 + 0.0012, 2, 0.2}, {x, -2 + 0.0012, 2, 0.2}]], 120] // Short RepeatedTiming[ Test4[Table[ Hue[(Arg[fn] + \[Pi])/(2 \[Pi]), 1/(1 + 0.3 Log[Abs[fn] + 1]), 1 - 1/(1.1 + 5 Log[Abs[fn] + 1]), 1], {y, -2 + 0.0012, 2, 0.2}, {x, -2 + 0.0012, 2, 0.2}]], 120] // Short RepeatedTiming[ Parallelize[ Test1[Table[ Hue[(Arg[fn] + \[Pi])/(2 \[Pi]), 1/(1 + 0.3 Log[Abs[fn] + 1]), 1 - 1/(1.1 + 5 Log[Abs[fn] + 1]), 1], {y, -2 + 0.0012, 2, 0.2}, {x, -2 + 0.0012, 2, 0.2}]]], 120] // Short 分别结果为 {0.0069,{{<<1>>},{<<1>>},<<17>>,{<<1>>}}} {0.02,{{<<1>>},<<18>>,{{<<1>>},<<19>>}}} {0.47,{{<<1>>},<<18>>,{{<<1>>},<<19>>}}} {0.0071,{{<<1>>},{<<1>>},<<17>>,{<<1>>}}} 并且后两者报错。 谁能说明下并行为什么会比正常运算慢呢?
1 下一页