Not really precisely, cause you only check the amount of fps from one pre-frame, not from a second. 
But the good thing about it, that it shows us direct big fps drops, I tried that part of you.  
It jumps from 66 t/m 56, my fps is stable and it makes changes with 10 fps. 
but it detect big fps drops directly:(I tried this) 
local updateTick,lastFPSUpdate = 0,0 
addEventHandler ("onClientPreRender", root, 
function (dt) 
    local fps = math.floor ( 1000 / dt ) 
    if lastFPSUpdate-fps > 30 and (not updateTick or getTickCount () - updateTick > 500) then 
        updateTick = getTickCount () 
        outputChatBox("big fps drop") 
   end 
   lastFPSUpdate = fps 
end) 
 
@abxf,  
  
local counter = 0 
local starttick 
local fps =0 
addEventHandler("onClientRender",root, 
    function() 
        if not starttick then 
            starttick = getTickCount() 
        end 
        counter = counter+1 
        if getTickCount() - starttick >= 1000 then 
            fps = counter 
            starttick,counter = false,0 
        end 
        dxDrawText(""..fps.."", 898, 689, 1018, 736, tocolor(0, 255, 0, 255), 1.00, "default", "left", "top", false, false, true, false, false) 
    end 
)