2 added 52 characters in body edited Jan 31 '12 at 0:06 Sjoerd C. de Vries 58.5k1111 gold badges164164 silver badges303303 bronze badges One idea, which was originally appealing to me, was to simply split the plot domain in four quarter size pieces and have these pieces calculated in parallel using ParallelTable and then combined using Show. It appears though that the overhead of getting the graphics data back to Show is pretty large, so this only yields some extra speed if the function is computationally slow. a = 36; (parPlot = Show[ ParallelTable[ RegionPlot[ Mod[Sqrt[x^2 + y^2] - 7/2 ArcTan[x, y] +Sin[x] +Cos[y], \[Pi]] < \[Pi]/2, {x, -a + i a, a + i a}, {y, -a + i a, a + i a}, PlotRange -> {{-a, a}, {-a, a}}, PlotPoints -> 50], {i, 0, 1}, {j, 0, 1}] ]); // AbsoluteTiming {25.5344605, Null} parPlot The original serial calculation: a = 36; g = RegionPlot[ Mod[Sqrt[x^2 + y^2] - 7/2 ArcTan[x, y] + Sin[x] + Cos[y], \[Pi]] < \[Pi]/2, {x, -a, a}, {y, -a, a}, PlotPoints -> 100]; // AbsoluteTiming (* ==> {51.2839332, Null} *) g It's twice as slow, but it looks slightly better in places. RegionPlot is worse than ContourPlot in this sense. One idea, which was originally appealing to me, was to simply split the plot domain in four quarter size pieces and have these pieces calculated in parallel using ParallelTable and then combined using Show. It appears though that the overhead of getting the graphics data back to Show is pretty large, so this only yields some extra speed if the function is computationally slow. a = 36; (parPlot = Show[ ParallelTable[ RegionPlot[ Mod[Sqrt[x^2 + y^2] - 7/2 ArcTan[x, y] +Sin[x] +Cos[y], \[Pi]] < \[Pi]/2, {x, -a + i a, a + i a}, {y, -a + i a, a + i a}, PlotRange -> {{-a, a}, {-a, a}}, PlotPoints -> 50], {i, 0, 1}, {j, 0, 1}] ]); // AbsoluteTiming {25.5344605, Null} parPlot The original serial calculation: a = 36; g = RegionPlot[ Mod[Sqrt[x^2 + y^2] - 7/2 ArcTan[x, y] + Sin[x] + Cos[y], \[Pi]] < \[Pi]/2, {x, -a, a}, {y, -a, a}, PlotPoints -> 100]; // AbsoluteTiming (* ==> {51.2839332, Null} *) g It's twice as slow, but it looks slightly better in places. One idea, which was originally appealing to me, was to simply split the plot domain in four quarter size pieces and have these pieces calculated in parallel using ParallelTable and then combined using Show. It appears though that the overhead of getting the graphics data back to Show is pretty large, so this only yields some extra speed if the function is computationally slow. a = 36; (parPlot = Show[ ParallelTable[ RegionPlot[ Mod[Sqrt[x^2 + y^2] - 7/2 ArcTan[x, y] +Sin[x] +Cos[y], \[Pi]] < \[Pi]/2, {x, -a + i a, a + i a}, {y, -a + i a, a + i a}, PlotRange -> {{-a, a}, {-a, a}}, PlotPoints -> 50], {i, 0, 1}, {j, 0, 1}] ]); // AbsoluteTiming {25.5344605, Null} parPlot The original serial calculation: a = 36; g = RegionPlot[ Mod[Sqrt[x^2 + y^2] - 7/2 ArcTan[x, y] + Sin[x] + Cos[y], \[Pi]] < \[Pi]/2, {x, -a, a}, {y, -a, a}, PlotPoints -> 100]; // AbsoluteTiming (* ==> {51.2839332, Null} *) g It's twice as slow, but it looks slightly better in places. RegionPlot is worse than ContourPlot in this sense. 1 answered Jan 30 '12 at 23:40 Sjoerd C. de Vries 58.5k1111 gold badges164164 silver badges303303 bronze badges One idea, which was originally appealing to me, was to simply split the plot domain in four quarter size pieces and have these pieces calculated in parallel using ParallelTable and then combined using Show. It appears though that the overhead of getting the graphics data back to Show is pretty large, so this only yields some extra speed if the function is computationally slow. a = 36; (parPlot = Show[ ParallelTable[ RegionPlot[ Mod[Sqrt[x^2 + y^2] - 7/2 ArcTan[x, y] +Sin[x] +Cos[y], \[Pi]] < \[Pi]/2, {x, -a + i a, a + i a}, {y, -a + i a, a + i a}, PlotRange -> {{-a, a}, {-a, a}}, PlotPoints -> 50], {i, 0, 1}, {j, 0, 1}] ]); // AbsoluteTiming {25.5344605, Null} parPlot The original serial calculation: a = 36; g = RegionPlot[ Mod[Sqrt[x^2 + y^2] - 7/2 ArcTan[x, y] + Sin[x] + Cos[y], \[Pi]] < \[Pi]/2, {x, -a, a}, {y, -a, a}, PlotPoints -> 100]; // AbsoluteTiming (* ==> {51.2839332, Null} *) g It's twice as slow, but it looks slightly better in places.