105 lines
3.3 KiB
Rust
105 lines
3.3 KiB
Rust
#![allow(unused)]
|
|
|
|
#[macro_use]
|
|
extern crate criterion;
|
|
use criterion::Criterion;
|
|
|
|
// extern crate futures;
|
|
extern crate hyper;
|
|
extern crate hyper_tls;
|
|
extern crate podcasts_data;
|
|
extern crate rand;
|
|
extern crate tokio_core;
|
|
// extern crate rayon;
|
|
extern crate rss;
|
|
|
|
// use rayon::prelude::*;
|
|
|
|
// use futures::future::*;
|
|
use tokio_core::reactor::Core;
|
|
|
|
use podcasts_data::database::truncate_db;
|
|
use podcasts_data::pipeline;
|
|
use podcasts_data::FeedBuilder;
|
|
use podcasts_data::Source;
|
|
// use podcasts_data::errors::*;
|
|
|
|
use std::io::BufReader;
|
|
|
|
// RSS feeds
|
|
const INTERCEPTED: &[u8] = include_bytes!("../tests/feeds/2018-01-20-Intercepted.xml");
|
|
const INTERCEPTED_URL: &str = "https://web.archive.org/web/20180120083840if_/https://feeds.\
|
|
feedburner.com/InterceptedWithJeremyScahill";
|
|
|
|
const UNPLUGGED: &[u8] = include_bytes!("../tests/feeds/2018-01-20-LinuxUnplugged.xml");
|
|
const UNPLUGGED_URL: &str =
|
|
"https://web.archive.org/web/20180120110314if_/https://feeds.feedburner.com/linuxunplugged";
|
|
|
|
const TIPOFF: &[u8] = include_bytes!("../tests/feeds/2018-01-20-TheTipOff.xml");
|
|
const TIPOFF_URL: &str =
|
|
"https://web.archive.org/web/20180120110727if_/https://rss.acast.com/thetipoff";
|
|
|
|
// This feed has HUGE descripion and summary fields which can be very
|
|
// very expensive to parse.
|
|
const CODE: &[u8] = include_bytes!("../tests/feeds/2018-01-20-GreaterThanCode.xml");
|
|
const CODE_URL: &str =
|
|
"https://web.archive.org/web/20180120104741if_/https://www.greaterthancode.com/feed/podcast";
|
|
|
|
// Relative small feed
|
|
const STARS: &[u8] = include_bytes!("../tests/feeds/2018-01-20-StealTheStars.xml");
|
|
const STARS_URL: &str =
|
|
"https://web.archive.org/web/20180120104957if_/https://rss.art19.com/steal-the-stars";
|
|
|
|
static FEEDS: &[(&[u8], &str)] = &[
|
|
(INTERCEPTED, INTERCEPTED_URL),
|
|
(UNPLUGGED, UNPLUGGED_URL),
|
|
(TIPOFF, TIPOFF_URL),
|
|
(CODE, CODE_URL),
|
|
(STARS, STARS_URL),
|
|
];
|
|
|
|
fn bench_index_large_feed(c: &mut Criterion) {
|
|
truncate_db().unwrap();
|
|
let url = "https://www.greaterthancode.com/feed/podcast";
|
|
let mut core = Core::new().unwrap();
|
|
|
|
c.bench_function("index_large_feed", move |b| {
|
|
b.iter(|| {
|
|
let s = Source::from_url(url).unwrap();
|
|
// parse it into a channel
|
|
let chan = rss::Channel::read_from(BufReader::new(CODE)).unwrap();
|
|
let feed = FeedBuilder::default()
|
|
.channel(chan)
|
|
.source_id(s.id())
|
|
.build()
|
|
.unwrap();
|
|
core.run(feed.index()).unwrap();
|
|
})
|
|
});
|
|
truncate_db().unwrap();
|
|
}
|
|
|
|
fn bench_index_small_feed(c: &mut Criterion) {
|
|
truncate_db().unwrap();
|
|
let url = "https://rss.art19.com/steal-the-stars";
|
|
let mut core = Core::new().unwrap();
|
|
|
|
c.bench_function("index_small_feed", move |b| {
|
|
b.iter(|| {
|
|
let s = Source::from_url(url).unwrap();
|
|
// parse it into a channel
|
|
let chan = rss::Channel::read_from(BufReader::new(STARS)).unwrap();
|
|
let feed = FeedBuilder::default()
|
|
.channel(chan)
|
|
.source_id(s.id())
|
|
.build()
|
|
.unwrap();
|
|
core.run(feed.index()).unwrap();
|
|
})
|
|
});
|
|
truncate_db().unwrap();
|
|
}
|
|
|
|
criterion_group!(benches, bench_index_large_feed, bench_index_small_feed);
|
|
criterion_main!(benches);
|