Split benchmarks out of main source
This commit is contained in:
parent
41b86532ce
commit
8e2c7febc0
|
@ -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"));
|
||||
}
|
|
@ -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'));
|
||||
});
|
||||
}
|
19
src/lib.rs
19
src/lib.rs
|
@ -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();
|
||||
|
|
50
src/nfa.rs
50
src/nfa.rs
|
@ -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)
|
||||
|
|
Loading…
Reference in New Issue