If you turn sync off, then you need to take SYNC out of your main loop. Turning sync off just means that DBP is doing the syncing for you, and if I recall it's automatically set to 60 fps.
With SYNC ON you have more control over how often the sync actually occurs.
Have a look at
Decoupling the Display Loop from the Game Loop for better game performance
It doesn't show you how to release unneeded CPU cycles, but it does show you how to make use of all the CPU you can to maintain a steady framerate.
In the game loop you can do things like use the command NICE WAIT from the Matrix1Utils, and execute NICE WAIT X every Y loops to give some CPU time back if your program can spare it.
For example, if your program's Display loop is running at a steady 60 LPS, and your Game loop is running at 3,000 LPS, then in the Game loop you could put,
if gameLoops / 10.0 = int(gameLoops / 10.0)
nice wait 1
endif
Every 10th loop of the Game loop would release 1 millisecond of CPU time back to the system. You would be surprised how quickly that adds up, and you might have to write a dynamic routine to adjust that wait value or change it to every 20th loop so it doesn't slow you down to much when the load gets heavy.
It's basically all about dynamically directing the power where it needs to be at the time.