# FrameRateMonitor

#### new Cesium.FrameRateMonitor(options)
Scene/FrameRateMonitor.js 32

Monitors the frame rate (frames per second) in a `Scene` and raises an event if the frame rate is lower than a threshold. Later, if the frame rate returns to the required level, a separate event is raised. To avoid creating multiple FrameRateMonitors for a single `Scene`, use `FrameRateMonitor.fromScene` instead of constructing an instance explicitly.

Name | Type | Description
--- | --- | ---
`options` | Object | optional Object with the following properties:
Name | Type | Default | Description
--- | --- | --- | ---
`scene` | Scene |  | The Scene instance for which to monitor performance.
`samplingWindow` | Number | `5.0` | optional The length of the sliding window over which to compute the average frame rate, in seconds.
`quietPeriod` | Number | `2.0` | optional The length of time to wait at startup and each time the page becomes visible (i.e. when the user switches back to the tab) before starting to measure performance, in seconds.
`warmupPeriod` | Number | `5.0` | optional The length of the warmup period, in seconds. During the warmup period, a separate (usually lower) frame rate is required.
`minimumFrameRateDuringWarmup` | Number | `4` | optional The minimum frames-per-second that are required for acceptable performance during the warmup period. If the frame rate averages less than this during any samplingWindow during the warmupPeriod, the lowFrameRate event will be raised and the page will redirect to the redirectOnLowFrameRateUrl, if any.
`minimumFrameRateAfterWarmup` | Number | `8` | optional The minimum frames-per-second that are required for acceptable performance after the end of the warmup period. If the frame rate averages less than this during any samplingWindow after the warmupPeriod, the lowFrameRate event will be raised and the page will redirect to the redirectOnLowFrameRateUrl, if any.

### Members

#### static Cesium.FrameRateMonitor.defaultSettings : Object
Scene/FrameRateMonitor.js 162

The default frame rate monitoring settings. These settings are used when `FrameRateMonitor.fromScene` needs to create a new frame rate monitor, and for any settings that are not passed to the `FrameRateMonitor` constructor.

#### lastFramesPerSecond : Number
Scene/FrameRateMonitor.js 240

Gets the most recently computed average frames-per-second over the last `samplingWindow`. This property may be undefined if the frame rate has not been computed.

#### lowFrameRate : Event
Scene/FrameRateMonitor.js 215

Gets the event that is raised when a low frame rate is detected. The function will be passed the `Scene` instance as its first parameter and the average number of frames per second over the sampling window as its second parameter.

#### minimumFrameRateAfterWarmup : Number
Scene/FrameRateMonitor.js 87

Gets or sets the minimum frames-per-second that are required for acceptable performance after the end of the warmup period. If the frame rate averages less than this during any `samplingWindow` after the `warmupPeriod`, the `lowFrameRate` event will be raised and the page will redirect to the `redirectOnLowFrameRateUrl`, if any.

#### minimumFrameRateDuringWarmup : Number
Scene/FrameRateMonitor.js 76

Gets or sets the minimum frames-per-second that are required for acceptable performance during the warmup period. If the frame rate averages less than this during any `samplingWindow` during the `warmupPeriod`, the `lowFrameRate` event will be raised and the page will redirect to the `redirectOnLowFrameRateUrl`, if any.

#### nominalFrameRate : Event
Scene/FrameRateMonitor.js 228

Gets the event that is raised when the frame rate returns to a normal level after having been low. The function will be passed the `Scene` instance as its first parameter and the average number of frames per second over the sampling window as its second parameter.

#### quietPeriod : Number
Scene/FrameRateMonitor.js 55

Gets or sets the length of time to wait at startup and each time the page becomes visible (i.e. when the user switches back to the tab) before starting to measure performance, in seconds.

#### samplingWindow : Number
Scene/FrameRateMonitor.js 45

Gets or sets the length of the sliding window over which to compute the average frame rate, in seconds.

#### scene : Scene
Scene/FrameRateMonitor.js 202

Gets the `Scene` instance for which to monitor performance.

#### warmupPeriod : Number
Scene/FrameRateMonitor.js 65

Gets or sets the length of the warmup period, in seconds. During the warmup period, a separate (usually lower) frame rate is required.

### Methods

#### static Cesium.FrameRateMonitor.fromScene(scene) → FrameRateMonitor
Scene/FrameRateMonitor.js 177

Gets the `FrameRateMonitor` for a given scene. If the scene does not yet have a `FrameRateMonitor`, one is created with the `FrameRateMonitor.defaultSettings`.

Name | Type | Description
--- | --- | ---
`scene` | Scene | The scene for which to get the `FrameRateMonitor`.

##### Returns:

The scene's `FrameRateMonitor`.

#### destroy()
Scene/FrameRateMonitor.js 302

Unsubscribes this instance from all events it is listening to. Once an object is destroyed, it should not be used; calling any function other than `isDestroyed` will result in a `DeveloperError` exception. Therefore, assign the return value (`undefined`) to the object as done in the example.

##### Throws:

- DeveloperError : This object was destroyed, i.e., destroy() was called.

##### See:

- FrameRateMonitor#isDestroyed

#### isDestroyed() → Boolean
Scene/FrameRateMonitor.js 286

Returns true if this object was destroyed; otherwise, false.
If this object was destroyed, it should not be used; calling any function other than `isDestroyed` will result in a `DeveloperError` exception.

##### Returns:

True if this object was destroyed; otherwise, false.

##### See:

- FrameRateMonitor#destroy

#### pause()
Scene/FrameRateMonitor.js 252

Pauses monitoring of the frame rate. To resume monitoring, `FrameRateMonitor#unpause` must be called once for each time this function is called.

#### unpause()
Scene/FrameRateMonitor.js 266

Resumes monitoring of the frame rate. If `FrameRateMonitor#pause` was called multiple times, this function must be called the same number of times in order to actually resume monitoring.