Split benchmarks out of main source

This commit is contained in:
Wim Looman 2019-08-13 18:09:43 +02:00
parent 41b86532ce
commit 8e2c7febc0
4 changed files with 68 additions and 69 deletions

19
benches/bench.rs Normal file
View File

@ -0,0 +1,19 @@
#![feature(test)]
extern crate route_recognizer;
extern crate test;
use route_recognizer::Router;
#[bench]
fn benchmark(b: &mut test::Bencher) {
let mut router = Router::new();
router.add("/posts/:post_id/comments/:id", "comment".to_string());
router.add("/posts/:post_id/comments", "comments".to_string());
router.add("/posts/:post_id", "post".to_string());
router.add("/posts", "posts".to_string());
router.add("/comments", "comments2".to_string());
router.add("/comments/:id", "comment2".to_string());
b.iter(|| router.recognize("/posts/100/comments/200"));
}

49
benches/nfa.rs Normal file
View File

@ -0,0 +1,49 @@
#![feature(test)]
extern crate route_recognizer;
extern crate test;
use route_recognizer::nfa::CharSet;
use std::collections::{BTreeSet, HashSet};
#[bench]
fn bench_char_set(b: &mut test::Bencher) {
let mut set = CharSet::new();
set.insert('p');
set.insert('n');
set.insert('/');
b.iter(|| {
assert!(set.contains('p'));
assert!(set.contains('/'));
assert!(!set.contains('z'));
});
}
#[bench]
fn bench_hash_set(b: &mut test::Bencher) {
let mut set = HashSet::new();
set.insert('p');
set.insert('n');
set.insert('/');
b.iter(|| {
assert!(set.contains(&'p'));
assert!(set.contains(&'/'));
assert!(!set.contains(&'z'));
});
}
#[bench]
fn bench_btree_set(b: &mut test::Bencher) {
let mut set = BTreeSet::new();
set.insert('p');
set.insert('n');
set.insert('/');
b.iter(|| {
assert!(set.contains(&'p'));
assert!(set.contains(&'/'));
assert!(!set.contains(&'z'));
});
}

View File

@ -1,8 +1,3 @@
#![cfg_attr(test, feature(test))]
#[cfg(test)]
extern crate test;
use nfa::CharacterClass;
use nfa::NFA;
use std::cmp::Ordering;
@ -350,20 +345,6 @@ fn star() {
assert_eq!(m.params, params("foo", "bar/foo"));
}
#[cfg(test)]
#[bench]
fn benchmark(b: &mut test::Bencher) {
let mut router = Router::new();
router.add("/posts/:post_id/comments/:id", "comment".to_string());
router.add("/posts/:post_id/comments", "comments".to_string());
router.add("/posts/:post_id", "post".to_string());
router.add("/posts", "posts".to_string());
router.add("/comments", "comments2".to_string());
router.add("/comments/:id", "comment2".to_string());
b.iter(|| router.recognize("/posts/100/comments/200"));
}
#[allow(dead_code)]
fn params(key: &str, val: &str) -> Params {
let mut map = Params::new();

View File

@ -2,11 +2,6 @@ use self::CharacterClass::{Ascii, InvalidChars, ValidChars};
use std::collections::HashSet;
use std::u64;
#[cfg(test)]
use std::collections::BTreeSet;
#[cfg(test)]
use test;
#[derive(PartialEq, Eq, Clone, Default)]
pub struct CharSet {
low_mask: u64,
@ -591,51 +586,6 @@ fn test_ascii_set() {
assert!(!set.contains('ü'), "The set does not contain ü");
}
#[cfg(test)]
#[bench]
fn bench_char_set(b: &mut test::Bencher) {
let mut set = CharSet::new();
set.insert('p');
set.insert('n');
set.insert('/');
b.iter(|| {
assert!(set.contains('p'));
assert!(set.contains('/'));
assert!(!set.contains('z'));
});
}
#[cfg(test)]
#[bench]
fn bench_hash_set(b: &mut test::Bencher) {
let mut set = HashSet::new();
set.insert('p');
set.insert('n');
set.insert('/');
b.iter(|| {
assert!(set.contains(&'p'));
assert!(set.contains(&'/'));
assert!(!set.contains(&'z'));
});
}
#[cfg(test)]
#[bench]
fn bench_btree_set(b: &mut test::Bencher) {
let mut set = BTreeSet::new();
set.insert('p');
set.insert('n');
set.insert('/');
b.iter(|| {
assert!(set.contains(&'p'));
assert!(set.contains(&'/'));
assert!(!set.contains(&'z'));
});
}
#[allow(dead_code)]
fn valid(char: char) -> CharacterClass {
CharacterClass::valid_char(char)