summaryrefslogtreecommitdiffstats
path: root/third_party/rust/phf_macros/benches
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/rust/phf_macros/benches')
-rw-r--r--third_party/rust/phf_macros/benches/bench.rs130
1 files changed, 130 insertions, 0 deletions
diff --git a/third_party/rust/phf_macros/benches/bench.rs b/third_party/rust/phf_macros/benches/bench.rs
new file mode 100644
index 0000000000..c0d66ef79d
--- /dev/null
+++ b/third_party/rust/phf_macros/benches/bench.rs
@@ -0,0 +1,130 @@
+#![feature(test)]
+
+extern crate test;
+
+mod map {
+ use std::collections::{BTreeMap, HashMap};
+ use test::Bencher;
+ use phf::phf_map;
+
+ macro_rules! map_and_match {
+ ($map:ident, $f:ident, $($key:expr => $value:expr,)+) => {
+ static $map: phf::Map<&'static str, usize> = phf_map! {
+ $($key => $value),+
+ };
+
+ fn $f(key: &str) -> Option<usize> {
+ match key {
+ $($key => Some($value),)+
+ _ => None
+ }
+ }
+ }
+ }
+
+ map_and_match! { MAP, match_get,
+ "apple" => 0,
+ "banana" => 1,
+ "carrot" => 2,
+ "doughnut" => 3,
+ "eggplant" => 4,
+ "frankincene" => 5,
+ "grapes" => 6,
+ "haggis" => 7,
+ "ice cream" => 8,
+ "jelly beans" => 9,
+ "kaffir lime leaves" => 10,
+ "lemonade" => 11,
+ "mashmallows" => 12,
+ "nectarines" => 13,
+ "oranges" => 14,
+ "pineapples" => 15,
+ "quinoa" => 16,
+ "rosemary" => 17,
+ "sourdough" => 18,
+ "tomatoes" => 19,
+ "unleavened bread" => 20,
+ "vanilla" => 21,
+ "watermelon" => 22,
+ "xinomavro grapes" => 23,
+ "yogurt" => 24,
+ "zucchini" => 25,
+ }
+
+ #[bench]
+ fn bench_match_some(b: &mut Bencher) {
+ b.iter(|| {
+ assert_eq!(match_get("zucchini").unwrap(), 25);
+ })
+ }
+
+ #[bench]
+ fn bench_match_none(b: &mut Bencher) {
+ b.iter(|| {
+ assert_eq!(match_get("potato"), None);
+ })
+ }
+
+ #[bench]
+ fn bench_btreemap_some(b: &mut Bencher) {
+ let mut map = BTreeMap::new();
+ for (key, value) in MAP.entries() {
+ map.insert(*key, *value);
+ }
+
+ b.iter(|| {
+ assert_eq!(map.get("zucchini").unwrap(), &25);
+ })
+ }
+
+ #[bench]
+ fn bench_hashmap_some(b: &mut Bencher) {
+ let mut map = HashMap::new();
+ for (key, value) in MAP.entries() {
+ map.insert(*key, *value);
+ }
+
+ b.iter(|| {
+ assert_eq!(map.get("zucchini").unwrap(), &25);
+ })
+ }
+
+ #[bench]
+ fn bench_phf_some(b: &mut Bencher) {
+ b.iter(|| {
+ assert_eq!(MAP.get("zucchini").unwrap(), &25);
+ })
+ }
+
+ #[bench]
+ fn bench_btreemap_none(b: &mut Bencher) {
+ let mut map = BTreeMap::new();
+ for (key, value) in MAP.entries() {
+ map.insert(*key, *value);
+ }
+
+ b.iter(|| {
+ assert_eq!(map.get("potato"), None);
+ })
+ }
+
+
+ #[bench]
+ fn bench_hashmap_none(b: &mut Bencher) {
+ let mut map = HashMap::new();
+ for (key, value) in MAP.entries() {
+ map.insert(*key, *value);
+ }
+
+ b.iter(|| {
+ assert_eq!(map.get("potato"), None);
+ })
+ }
+
+ #[bench]
+ fn bench_phf_none(b: &mut Bencher) {
+ b.iter(|| {
+ assert_eq!(MAP.get("potato"), None);
+ })
+ }
+}