diff --git a/hammond-data/benches/bench.rs b/hammond-data/benches/bench.rs index d721878..d6dd37d 100644 --- a/hammond-data/benches/bench.rs +++ b/hammond-data/benches/bench.rs @@ -1,19 +1,29 @@ #![feature(test)] extern crate diesel; +extern crate futures; extern crate hammond_data; +extern crate hyper; +extern crate hyper_tls; extern crate rand; extern crate rayon; extern crate rss; extern crate tempdir; extern crate test; +extern crate tokio_core; use rayon::prelude::*; use test::Bencher; +use tokio_core::reactor::Core; +use hyper::Client; +use hyper_tls::HttpsConnector; +use futures::future::*; + use hammond_data::Source; use hammond_data::feed::*; +use hammond_data::database::truncate_db; use std::io::BufReader; @@ -39,7 +49,7 @@ fn index_urls() { let s = Source::from_url(url).unwrap(); // parse it into a channel let chan = rss::Channel::read_from(BufReader::new(buff)).unwrap(); - Feed::from_channel_source(chan, s) + Feed::from_channel_source(chan, s.id()) }) .collect(); @@ -64,3 +74,39 @@ fn bench_index_unchanged_feeds(b: &mut Bencher) { } }); } + +#[bench] +fn bench_get_normal_feeds(b: &mut Bencher) { + truncate_db().unwrap(); + + b.iter(|| { + URLS.iter().for_each(|&(_, url)| { + let mut s = Source::from_url(url).unwrap(); + s.into_feed(true).unwrap(); + }) + }); +} + +#[bench] +fn bench_get_future_feeds(b: &mut Bencher) { + truncate_db().unwrap(); + + b.iter(|| { + let mut core = Core::new().unwrap(); + let mut handle = core.handle(); + let mut client = Client::configure() + .connector(HttpsConnector::new(4, &handle).unwrap()) + .build(&handle); + + let mut foo: Vec<_>; + + URLS.iter().for_each(|&(_, url)| { + let mut s = Source::from_url(url).unwrap(); + let future = s.into_fututre_feed(&mut client, true); + foo.push(future); + }); + + let work = join_all(foo); + core.run(work).unwrap(); + }); +}