Why is micros() so much slower than millis()?

indeed - not surprising, the signed long is promoted to unsigned for the test.