Here is a pretty good explanation of the limiting factors with 3d printing and speed posted by Jeffrey Meyer:

The major limiting factors to the speed are dictated by a fellow named Isaac Newton et al – yes, the same guy who invented gravity.

Factor # 1:  Newton’s 2nd law says that the force F required to accelerate a mass M to a speed V is proportional to the mass.

F = MxA

A is the acceleration – the time rate of change of V – i.e. if you change V in a short time, A is high.

In our case, let us look at a situation where we are printing the corner of a rectangle – our head is moving along X at speed V and we want it to stop the X motion and start moving along Y at the same speed.  Stepper motors are driving both axes – i.e. as the name implies they move in steps, not continuously.  This means that one X step before we reach the corner we have to decelerate from speed V to zero in one single step (a very short time).  A is high means F is high.  Similarly, we have to accelerate M to speed V in the Y-axis in one-step – again A and consequently F are high.  For a high force from the stepper motor, we need a high current from the stepper motor driver electronics.  In fact, the whole machine frame stiffness could be affected by these high values of A, resulting in slightly distorted prints.

Factor # 1 limitation is M (mass) and stepper motor driver current.

Factor # 2: The thermal power of the hot-end.  In order to print more quickly you need to heat up more material to the print temperature.  Simply said, the more hot-end heating power you have the quicker you can potentially print (not withstanding other limitations).

Factor # 3:  Cooling and part size.  This limitation is in direct conflict with Factor # 2.  If you are printing a very small part then the next layer starts extruding before the previous layer has had time to cool sufficiently.  So, you switch on the cooling fan that also cools the hot-end that now requires even more power to keep the melt temperature constant, and consequently more cooling is required ….  By contrast, very big parts may not require any cooling at all.

Factor # 4:  STL facet size.  The STL file that you feed into your slicer consists simply of a collection of small 3D triangles (facets) joined at their vertices and edges.  The slicer finds the points of intersection of these edges with the layer planes and joins them with a sequence of small straight lines, and then translates them into commands of how many steps to move each stepper motor.  If the facet size is very big the print will reflect a curve as a polygon.  For example, a circle may print as a hexagon.  On the other hand, if the facet size is very small, the slicer will work very hard, the polygon will print accurately representing the base curve, but the output file (g-code) will be very large and the printer firmware may not be able to keep up with the number of g-code commands at the speed you want to print.  In such a case, the head will hesitate periodically causing nasty blobs and cavities in the print.

So this may not be the answer you were expecting, but as the saying goes there’s no free lunch.  Since there are a large number of variables involved, and you have to compromise between them, there is no magic formula to answer your question.  You can dive in and experiment by trial and error, but if you understand the processes, you can reduce the number of errors.