user49010: I am running a Pololu A4988 Stepper driver with two (soon to be three) steppers using the AccelStepper library. I have wired 1/8th microstepping on both as smooth running is important. 
The motors run fine however, when running simultaneously, if Stepper 1 finishes its move before the Stepper 2, there is a marked increase in speed in the Stepper 2 (evident audibly and visually).
The code I use to run the motors is:
void MoveAccelXY(int Xm, int Ym) // function 6
{
  X_Axis.moveTo(Xm);
  Y_Axis.moveTo(Ym);
  while(X_Axis.distanceToGo() !=0 || Y_Axis.distanceToGo() !=0)
  {
    X_Axis.run();
    Y_Axis.run();
  }
  Xpos = X_Axis.currentPosition();
  Ypos = Y_Axis.currentPosition();
  Serial.print("X" + Xpos);
  delay(50);
  Serial.print("Y" + Ypos);
  delay(50);      
  Serial.print("C");
}

I would like there to be no speed drop on any steppers. Increasing the input voltage does not have an effect.
Is the Arduino clock speed the culprit?

user313: Without seeing the rest of your code, the best guess - and I think it is quite likely - is the use of delay() and printing within the stepper function. With 2 motors running, and even ignoring the printing time, there will be a total of 200ms taken up by the delays. That means each motor gets serviced a maximum of 5x/sec. Stop one motor, and the other one can double that to 10x/sec.
Look at the Blink Without Delay example for one way of managing timed events without calling delay(). The SimpleTimer library provides another. 
Update:

...run() events are triggered within a while() loop ...

Ah, yes, I see that. So it looks like only one motor could run at a time - the while() loop runs until this motor reaches its target. But you said you run two at a time. So yes, I think understanding the rest of the code will help.

49010: <p>I am running a <a href="https://www.robotshop.com/media/files/pdf/datasheet-1182.pdf" rel="nofollow noreferrer">Pololu A4988 Stepper driver</a> with two (soon to be three) steppers using the <code>AccelStepper</code> library. I have wired 1/8th microstepping on both as smooth running is important. </p>

<p>The motors run fine however, when running simultaneously, if Stepper 1 finishes its move before the Stepper 2, there is a marked increase in speed in the Stepper 2 (evident audibly and visually).</p>

<p>The code I use to run the motors is:</p>

<pre><code>void MoveAccelXY(int Xm, int Ym) // function 6
{
  X_Axis.moveTo(Xm);
  Y_Axis.moveTo(Ym);
  while(X_Axis.distanceToGo() !=0 || Y_Axis.distanceToGo() !=0)
  {
    X_Axis.run();
    Y_Axis.run();
  }
  Xpos = X_Axis.currentPosition();
  Ypos = Y_Axis.currentPosition();
  Serial.print("X" + Xpos);
  delay(50);
  Serial.print("Y" + Ypos);
  delay(50);      
  Serial.print("C");
}
</code></pre>

<p>I would like there to be no speed drop on any steppers. Increasing the input voltage does not have an effect.</p>

<p>Is the Arduino clock speed the culprit?</p>
 313: <p>Without seeing the rest of your code, the best guess - and I think it is quite likely - is the use of <code>delay()</code> and printing within the stepper function. With 2 motors running, and even ignoring the printing time, there will be a total of 200ms taken up by the delays. That means each motor gets serviced a maximum of 5x/sec. Stop one motor, and the other one can double that to 10x/sec.</p>

<p>Look at the Blink Without Delay example for one way of managing timed events without calling <code>delay()</code>. The <a href="https://playground.arduino.cc/Code/SimpleTimer" rel="nofollow noreferrer">SimpleTimer</a> library provides another. </p>

<p>Update:</p>

<blockquote>
  <p>...run() events are triggered within a while() loop ...</p>
</blockquote>

<p>Ah, yes, I see that. So it looks like only one motor could run at a time - the while() loop runs until this motor reaches its target. But you said you run two at a time. So yes, I think understanding the rest of the code will help.</p>
