Q:

Why do I have to run my 2D game at 300+ FPS for movement to be passably smooth?

I'm working on a simple game with SFML, and the only way to make the game reasonably smooth is to allow it the highest framerate my machine can handle (that is, giving it no limit). 60 FPS in my game looks like 5 FPS in most games.
I've made sure it wasn't any weird timing issue with sf::Clock by making my delta variable constant, and I've made a simple moving square with the default SFML template to make sure it wasn't anything else in my code.
Limiting framerate using window.setFramerateLimit(80), window.setVerticalSync(true), or by placing usleep(1000 * 15), a 15-millisecond pause (~67 FPS, in theory) in the game loop, cause the terribly glitchy, asymmetric animation.
I think the problem is my Mac. I hesitate to blame anything other than my code, but I just can't explain the problem otherwise. I'm running OS X Mavericks on a 15-inch MacBook Pro with a Retina display (2.4 GHz i7, Nvidia, 8GB RAM).
Is it the Retina display, or some issue with the sleep() system calls? Any thoughts are welcome. Thanks!

A:

Sleep calls are an extremely bad way of controlling framerate.  Use them to reduce CPU usage for sure, but don't use them to control framerate.

usleep(1000 * 15), a 15-millisecond pause (~67 FPS, in theory)

No, it's not.
First of all, see the documentation for usleep:

The actual time slept may be longer, due to system latencies and possible limitations in the timer resolution of the hardware.

Secondly, realise that the sleep time is in addition to the time taken to run a frame, which may be longer.  So if frame 1 takes 3ms, frame 2 takes 5ms, frame 3 takes 1ms, frame 4 takes 7ms, then when you add the sleep time (and assume that you actually do sleep for 15ms exact - which is unlikely) you're looking at frame times of 18ms, 20ms, 16ms, 22ms.
That's why you should never use sleep to control framerate.
The standard reference page for this topic is Glenn Fiedler's Fix your Timestep so I'm going to finish up by pointing you at that.

