make sure you're not loading any images or object files inside a loop, these generally take a while and should be loaded in advance if possible.
if you have any form of loop it will not show in the fps (as you don't generally sync inside these) so these are most likely the cause, if possible remove all loops and change them to a set number of iterations per sync
for example breaking your 'for' loops into parts each frame
i.e.
instead of
do something like this
if x = 1
low = 1
high = 25
x = 2
elseif x = 2
low = 26
high = 50
x = 1
endif
for a = low to high
next a
also exit out of loops as quickly as possible.
taking a few extra frames to run through all your AI logic etc can double your fps without any noticeable effect in game.
also check and clean any other loops you can... (such as repeat until or while loops)
repeat
setspriteposition(id,idx+1,y)
until getspritex(id) > 0
can become something like
if getspritex(id) < 1
setspriteposition(id,1,y)
you can also use float# = GetFrameTime() to find exactly how long each sync() took
life's one big game
spec= 4ghz, 16gb ram, AMD R9 2700 gpu