Struct ReportBuilder

Source
pub struct ReportBuilder<'a> { /* private fields */ }

Implementations§

Source§

impl<'a> ReportBuilder<'a>

Source

pub fn new(profiler: &'a RwLock<Result<Profiler>>) -> Self

Source

pub fn frames_post_processor<T>( &mut self, frames_post_processor: T, ) -> &mut Self
where T: Fn(&mut Frames) + 'static,

Examples found in repository?
examples/post_processor.rs (lines 92-94)
44fn main() {
45    let prime_numbers = Arc::new(prepare_prime_numbers());
46
47    //    println!("{}", std::mem::size_of::<Collector<UnresolvedFrames>>());
48    let guard = rsperftools::ProfilerGuard::new(100).unwrap();
49
50    let p1 = prime_numbers.clone();
51    std::thread::Builder::new()
52        .name("THREAD_ONE".to_owned())
53        .spawn(move || loop {
54            let mut _v = 0;
55
56            for i in 2..50000 {
57                if is_prime_number(i, p1.clone()) {
58                    _v += 1;
59                }
60            }
61        })
62        .unwrap();
63
64    let p2 = prime_numbers.clone();
65    std::thread::Builder::new()
66        .name("THREAD_TWO".to_owned())
67        .spawn(move || loop {
68            let mut _v = 0;
69
70            for i in 2..50000 {
71                if is_prime_number(i, p2.clone()) {
72                    _v += 1;
73                }
74            }
75        })
76        .unwrap();
77
78    let p3 = prime_numbers.clone();
79    std::thread::spawn(move || loop {
80        let mut _v = 0;
81
82        for i in 2..50000 {
83            if is_prime_number(i, p3.clone()) {
84                _v += 1;
85            }
86        }
87    });
88
89    loop {
90        match guard
91            .report()
92            .frames_post_processor(|frames| {
93                frames.thread_name = "PROCESSED".to_string();
94            })
95            .build()
96        {
97            Ok(report) => {
98                println!("{}", report);
99            }
100            Err(_) => {}
101        };
102        std::thread::sleep(std::time::Duration::from_secs(1))
103    }
104    //    rsperftools::PROFILER.lock().unwrap().stop();
105}
Source

pub fn build(&mut self) -> Result<Report>

Examples found in repository?
examples/prime_number.rs (line 60)
43fn main() {
44    let prime_numbers = prepare_prime_numbers();
45
46    //    println!("{}", std::mem::size_of::<Collector<UnresolvedFrames>>());
47    let guard = rsperftools::ProfilerGuard::new(100).unwrap();
48
49    loop {
50        let mut v = 0;
51
52        for i in 2..50000 {
53            if is_prime_number(i, &prime_numbers) {
54                v += 1;
55            }
56        }
57
58        println!("Prime numbers: {}", v);
59
60        match guard.report().build() {
61            Ok(report) => {
62                println!("{}", report);
63            }
64            Err(_) => {}
65        };
66    }
67
68    //    rsperftools::PROFILER.lock().unwrap().stop();
69}
More examples
Hide additional examples
examples/multithread.rs (line 89)
44fn main() {
45    let prime_numbers = Arc::new(prepare_prime_numbers());
46
47    let guard = rsperftools::ProfilerGuard::new(100).unwrap();
48
49    let p1 = prime_numbers.clone();
50    std::thread::Builder::new()
51        .name("THREAD_ONE".to_owned())
52        .spawn(move || loop {
53            let mut _v = 0;
54
55            for i in 2..50000 {
56                if is_prime_number(i, p1.clone()) {
57                    _v += 1;
58                }
59            }
60        })
61        .unwrap();
62
63    let p2 = prime_numbers.clone();
64    std::thread::Builder::new()
65        .name("THREAD_TWO".to_owned())
66        .spawn(move || loop {
67            let mut _v = 0;
68
69            for i in 2..50000 {
70                if is_prime_number(i, p2.clone()) {
71                    _v += 1;
72                }
73            }
74        })
75        .unwrap();
76
77    let p3 = prime_numbers.clone();
78    std::thread::spawn(move || loop {
79        let mut _v = 0;
80
81        for i in 2..50000 {
82            if is_prime_number(i, p3.clone()) {
83                _v += 1;
84            }
85        }
86    });
87
88    loop {
89        match guard.report().build() {
90            Ok(report) => {
91                println!("{}", report);
92            }
93            Err(_) => {}
94        };
95        std::thread::sleep(std::time::Duration::from_secs(1))
96    }
97    //    rsperftools::PROFILER.lock().unwrap().stop();
98}
examples/post_processor.rs (line 95)
44fn main() {
45    let prime_numbers = Arc::new(prepare_prime_numbers());
46
47    //    println!("{}", std::mem::size_of::<Collector<UnresolvedFrames>>());
48    let guard = rsperftools::ProfilerGuard::new(100).unwrap();
49
50    let p1 = prime_numbers.clone();
51    std::thread::Builder::new()
52        .name("THREAD_ONE".to_owned())
53        .spawn(move || loop {
54            let mut _v = 0;
55
56            for i in 2..50000 {
57                if is_prime_number(i, p1.clone()) {
58                    _v += 1;
59                }
60            }
61        })
62        .unwrap();
63
64    let p2 = prime_numbers.clone();
65    std::thread::Builder::new()
66        .name("THREAD_TWO".to_owned())
67        .spawn(move || loop {
68            let mut _v = 0;
69
70            for i in 2..50000 {
71                if is_prime_number(i, p2.clone()) {
72                    _v += 1;
73                }
74            }
75        })
76        .unwrap();
77
78    let p3 = prime_numbers.clone();
79    std::thread::spawn(move || loop {
80        let mut _v = 0;
81
82        for i in 2..50000 {
83            if is_prime_number(i, p3.clone()) {
84                _v += 1;
85            }
86        }
87    });
88
89    loop {
90        match guard
91            .report()
92            .frames_post_processor(|frames| {
93                frames.thread_name = "PROCESSED".to_string();
94            })
95            .build()
96        {
97            Ok(report) => {
98                println!("{}", report);
99            }
100            Err(_) => {}
101        };
102        std::thread::sleep(std::time::Duration::from_secs(1))
103    }
104    //    rsperftools::PROFILER.lock().unwrap().stop();
105}

Auto Trait Implementations§

§

impl<'a> Freeze for ReportBuilder<'a>

§

impl<'a> !RefUnwindSafe for ReportBuilder<'a>

§

impl<'a> !Send for ReportBuilder<'a>

§

impl<'a> !Sync for ReportBuilder<'a>

§

impl<'a> Unpin for ReportBuilder<'a>

§

impl<'a> !UnwindSafe for ReportBuilder<'a>

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V