Finding Frame Rate Correctly [ISSUE]

I am using the frame rate script form the bootcamp demo and it says 51.31 FPS while the stats popup form unity says 205.8FPS. Which readin is correct. Help is appreciated.:slight_smile:

I’d go with the framerate script, not the stats display.

Care to explain why?

EDIT : Seems as if FRAPS gives the same reading as the scripts…I wonder why the stats box is incorrect.

Because we know how the script is calculating the framerate, and it seems like it’s giving a reasonable value, while we have no idea how the stats display is calculating the framerate.

The editor is only showing Graphics FPS - excludes everything else like the scripts, etc.

Real framerate should also be calculated in FULL SCREEN without Sync to VBL active.
Otherwise it will always be limited to the monitor’s refresh rate.

I’m using this classic code:

using UnityEngine;
using System.Collections;

public class HUDFPS : MonoBehaviour 
{

// Attach this to a GUIText to make a frames/second indicator.
//
// It calculates frames/second over each updateInterval,
// so the display does not keep changing wildly.
//
// It is also fairly accurate at very low FPS counts (<10).
// We do this not by simply counting frames per interval, but
// by accumulating FPS for each frame. This way we end up with
// correct overall FPS even if the interval renders something like
// 5.5 frames.
 
public  float updateInterval = 0.5F;
 
private float accum   = 0; // FPS accumulated over the interval
private int   frames  = 0; // Frames drawn over the interval
private float timeleft; // Left time for current interval
 
void Start()
{
    if( !guiText )
    {
        Debug.Log("UtilityFramesPerSecond needs a GUIText component!");
        enabled = false;
        return;
    }
    timeleft = updateInterval;  
}
 
void Update()
{
    timeleft -= Time.deltaTime;
    accum += Time.timeScale/Time.deltaTime;
    ++frames;
    
    // Interval ended - update GUI text and start new interval
    if( timeleft <= 0.0 )
    {
        // display two fractional digits (f2 format)
    float fps = accum/frames;
    string format = System.String.Format("{0:F2} FPS",fps);
    guiText.text = format;

    //if(fps < 30)
    //    guiText.material.color = Color.yellow;
    //else 
    //    if(fps < 10)
    //        guiText.material.color = Color.red;
    //    else
    //        guiText.material.color = Color.green;
    //  DebugConsole.Log(format,level);
    //    timeleft = updateInterval;
    //    accum = 0.0F;
    //    frames = 0;
    }
}
}

And it looks totally ok.

Useless anyway to look with any precision to framerate: too many variables involved.
First of all your product will not be played on your computer only.
Just use all your skills to optimize the game and don’t add more stuff after you hit the 60 fps limit (my choice, at least).