Alright what about the last question in my last post about vsync and setting the frame limit?
Should I just enable both or just one?
you should enable only one, but you also need to setup both values (if you enable one, then set disabled other), because there is a bug in SFML.
The bug is that if vertical sync is enabled, and you didn't call to SetFrameLimit(0), it will cause lags and jitter of frame rate.
This example will cause lags and movements will not be smooth:
SetVeticalSyncEnabled(true);
and this one will works good:
SetVeticalSyncEnabled(true);
SetFrameLimit(0);
This bug at least reproduced on CSFML 2.3.
Also notice that different dispay has different refresh rate. For example my samsung LCD has 75 Hz refresh rate. So, you need to call SetFrameLimit with exactly physical refresh rate to get smooth movements.
If you call SetFrameLimit(60) for 75 Hz display it will cause jitter movements on the screen.
After how many countless people have been using SFML and these functions for years and not a single person has claimed there is an issue and now you want to make the OP believe there are problems?
using some code with obvious bugs by many peoples is not indicate that there is no bug ;)
At least this bug with QPC and using SetThreadAffinity has been discussed by thousands of experienced game developers on forums. It's not just my opinion. It's investigation of many experienced peoples who works on commercial projects.
The best solution to resolve inconsistent values returned by QPC on machine where QPC uses RDTSC is to avoid using QPC from different threads. Another solution is to install patch which will switch QPC to use system timer instead of RDTSC. By the way this problem is not relevant for nowadays CPU. But by using sf::Clock which uses SetThreadAffinity you will add hidden problems into your code.
PS: just visited link from SFML source code (where solution with SetThreadAffinity was taken) and here is a comment from author of this solution:
Thomas Lee: SetThreadAffinityMask is wrong
So, even author of this solution has accept that it's wrong solution. But it still not removed from SFML :)