Struct comfy_wgpu::LoopHelper
pub struct LoopHelper { /* private fields */ }Expand description
Tool for loop rate reporting and control.
Can report mean rate per second of a loop over a configured
report interval with LoopHelper::report_rate.
Can limit a loop rate to a desired target using
LoopHelper::loop_sleep.
Example
use spin_sleep::LoopHelper;
let mut loop_helper = LoopHelper::builder()
.report_interval_s(0.5) // report every half a second
.build_with_target_rate(250.0); // limit to 250 FPS if possible
let mut current_fps = None;
loop {
let delta = loop_helper.loop_start(); // or .loop_start_s() for f64 seconds
// compute_something(delta);
if let Some(fps) = loop_helper.report_rate() {
current_fps = Some(fps.round());
}
// render_fps(current_fps);
loop_helper.loop_sleep(); // sleeps to achieve a 250 FPS rate
}Implementations§
§impl LoopHelper
impl LoopHelper
pub fn builder() -> LoopHelperBuilder
pub fn builder() -> LoopHelperBuilder
Returns a LoopHelperBuilder with which to build a
LoopHelper.
pub fn loop_start(&mut self) -> Duration
pub fn loop_start(&mut self) -> Duration
Notifies the helper that a new loop has begun.
Returns the delta, the duration since the last call to loop_start or loop_start_s.
pub fn loop_start_s(&mut self) -> f64
pub fn loop_start_s(&mut self) -> f64
Notifies the helper that a new loop has begun.
Returns the delta, the seconds since the last call to loop_start or loop_start_s.
pub fn loop_sleep(&mut self)
pub fn loop_sleep(&mut self)
Generally called at the end of a loop to sleep until the desired delta (configured with
build_with_target_rate)
has elapsed. Uses a SpinSleeper to sleep the thread to provide
improved accuracy. If the delta has already elapsed this method returns immediately.
pub fn loop_sleep_no_spin(&mut self)
pub fn loop_sleep_no_spin(&mut self)
Generally called at the end of a loop to sleep until the desired delta (configured with
build_with_target_rate)
has elapsed. Does not use a SpinSleeper, instead directly
calls thread::sleep and will never spin. This is less accurate than
loop_sleep but less CPU intensive.
pub fn report_rate(&mut self) -> Option<f64>
pub fn report_rate(&mut self) -> Option<f64>
Returns the mean rate per second recorded since the last report. Returns None if
the last report was within the configured report_interval.
pub fn set_target_rate<R>(&mut self, target_rate: R)where
R: Into<f64>,
pub fn set_target_rate<R>(&mut self, target_rate: R)where R: Into<f64>,
Changes the target loop rate
pub fn target_rate(&self) -> f64
pub fn target_rate(&self) -> f64
Returns the current target loop rate
Trait Implementations§
§impl Clone for LoopHelper
impl Clone for LoopHelper
§fn clone(&self) -> LoopHelper
fn clone(&self) -> LoopHelper
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more§impl Debug for LoopHelper
impl Debug for LoopHelper
§impl PartialEq<LoopHelper> for LoopHelper
impl PartialEq<LoopHelper> for LoopHelper
§fn eq(&self, other: &LoopHelper) -> bool
fn eq(&self, other: &LoopHelper) -> bool
self and other values to be equal, and is used
by ==.impl Eq for LoopHelper
impl StructuralEq for LoopHelper
impl StructuralPartialEq for LoopHelper
Auto Trait Implementations§
impl RefUnwindSafe for LoopHelper
impl Send for LoopHelper
impl Sync for LoopHelper
impl Unpin for LoopHelper
impl UnwindSafe for LoopHelper
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
§impl<Q, K> Equivalent<K> for Qwhere
Q: Eq + ?Sized,
K: Borrow<Q> + ?Sized,
impl<Q, K> Equivalent<K> for Qwhere Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
source§impl<Q, K> Equivalent<K> for Qwhere
Q: Eq + ?Sized,
K: Borrow<Q> + ?Sized,
impl<Q, K> Equivalent<K> for Qwhere Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,
source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.