While plotting a slow to evaluate function and trying to get some sense of progress, I noticed that Mathematica traverses the grid of points twice. Here's the reduced example:

    points = {};
    Dynamic[Show[
      ListPlot[Take[points, Max[0, Length@points - 5]], 
       PlotRange -> All],
      ListPlot[Take[points, -Min[Length@points, 5]], PlotRange -> All, 
       PlotStyle -> Directive[PointSize[Large], Opacity[0.1], Red]],
      AspectRatio -> Automatic]]
    
    Monitor[Plot3D[Pause[0.05]; 0, {a, -5, 5}, {b, -5, 5}, 
      PlotRange -> All, PlotPoints -> 10, MaxRecursion -> 0], 
     AppendTo[points, {a, b}];]

If you watch the plot, you'll see that the red points move twice over the grid. If you inspect the `plots` variable after plotting, you'll see that not all the points are duplicates: some are offset from their originals by $\sim10^{-8}$.

Why does `Plot3D` do this, even though I asked for `MaxRecursion->0`? Is there any way to convince it to only scan the function once (not having to resort to `ListPlot3D`+`Table`)?