#![forbid(bad_style, exceeding_bitshifts, mutable_transmutes, no_mangle_const_items,
unknown_crate_types, warnings)]
#![deny(deprecated, drop_with_repr_extern, improper_ctypes, missing_docs,
non_shorthand_field_patterns, overflowing_literals, plugin_as_library,
private_no_mangle_fns, private_no_mangle_statics, stable_features, unconditional_recursion,
unknown_lints, unsafe_code, unused, unused_allocation, unused_attributes,
unused_comparisons, unused_features, unused_parens, while_true)]
#![warn(trivial_casts, trivial_numeric_casts, unused_extern_crates, unused_import_braces,
unused_qualifications, unused_results)]
#![allow(box_pointers, fat_ptr_transmutes, missing_copy_implementations,
missing_debug_implementations, variant_size_differences)]
#![cfg_attr(feature="clippy", feature(plugin))]
#![cfg_attr(feature="clippy", plugin(clippy))]
#![cfg_attr(feature="clippy", deny(clippy, clippy_pedantic))]
#![cfg_attr(feature="clippy", allow(use_debug))]
#![feature(test)]
extern crate test;
extern crate rand;
extern crate message_filter;
use std::time::Duration;
fn generate_random_vec<T>(len: usize) -> Vec<T>
where T: rand::Rand {
let mut vec = Vec::<T>::with_capacity(len);
for _ in 0..len {
vec.push(rand::random::<T>());
}
vec
}
#[bench]
fn bench_add_1000_1kb_messages_to_100_capacity(b: &mut ::test::Bencher) {
let mut my_cache = ::message_filter::MessageFilter::<Vec<u8>>::with_capacity(100);
let mut contents = Vec::<Vec<u8>>::new();
let bytes_len = 1024;
for _ in 0..1000 {
contents.push(generate_random_vec::<u8>(bytes_len));
}
b.iter(|| {
for i in 0..1000 {
let _ = my_cache.insert(&contents[i]);
}
});
b.bytes = 1000 * bytes_len as u64;
assert_eq!(my_cache.len(), 100);
}
#[bench]
fn bench_add_10000_1kb_messages_to_1000_capacity(b: &mut ::test::Bencher) {
let mut my_cache = ::message_filter::MessageFilter::<Vec<u8>>::with_capacity(1000);
let mut contents = Vec::<Vec<u8>>::new();
let bytes_len = 1024;
for _ in 0..10000 {
contents.push(generate_random_vec::<u8>(bytes_len));
}
b.iter(|| {
for i in 0..10000 {
let _ = my_cache.insert(&contents[i]);
}
});
b.bytes = 10000 * bytes_len as u64;
assert_eq!(my_cache.len(), 1000);
}
#[bench]
fn bench_add_1000_1kb_messages_timeout(b: &mut ::test::Bencher) {
let time_to_live = Duration::from_millis(100);
let mut my_cache =
::message_filter::MessageFilter::<Vec<u8>>::with_expiry_duration(time_to_live);
let bytes_len = 1024;
for _ in 0..1000 {
let _ = my_cache.insert(&generate_random_vec::<u8>(bytes_len));
}
let content = generate_random_vec::<u8>(bytes_len);
::std::thread::sleep(Duration::from_millis(100));
b.iter(|| {
let _ = my_cache.insert(&content);
});
b.bytes = bytes_len as u64;
assert_eq!(my_cache.len(), 1);
}