Skip to content

Commit 8a32a2a

Browse files
author
Jonathan S
committed
Added substring searching benchmarks.
test str::bench::bench_contains_bad_naive ... bench: 1309 ns/iter (+/- 36) test str::bench::bench_contains_equal ... bench: 137 ns/iter (+/- 2) test str::bench::bench_contains_short_long ... bench: 5473 ns/iter (+/- 14) test str::bench::bench_contains_short_short ... bench: 57 ns/iter (+/- 6)
1 parent 2a7a391 commit 8a32a2a

File tree

1 file changed

+74
-0
lines changed

1 file changed

+74
-0
lines changed

src/libstd/str.rs

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2413,4 +2413,78 @@ mod bench {
24132413
assert_eq!(v.connect(sep).len(), s.len() * 10 + sep.len() * 9);
24142414
})
24152415
}
2416+
2417+
#[bench]
2418+
fn bench_contains_short_short(b: &mut Bencher) {
2419+
let haystack = "Lorem ipsum dolor sit amet, consectetur adipiscing elit.";
2420+
let needle = "sit";
2421+
2422+
b.iter(|| {
2423+
assert!(haystack.contains(needle));
2424+
})
2425+
}
2426+
2427+
#[bench]
2428+
fn bench_contains_short_long(b: &mut Bencher) {
2429+
let haystack = "\
2430+
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse quis lorem sit amet dolor \
2431+
ultricies condimentum. Praesent iaculis purus elit, ac malesuada quam malesuada in. Duis sed orci \
2432+
eros. Suspendisse sit amet magna mollis, mollis nunc luctus, imperdiet mi. Integer fringilla non \
2433+
sem ut lacinia. Fusce varius tortor a risus porttitor hendrerit. Morbi mauris dui, ultricies nec \
2434+
tempus vel, gravida nec quam.
2435+
2436+
In est dui, tincidunt sed tempus interdum, adipiscing laoreet ante. Etiam tempor, tellus quis \
2437+
sagittis interdum, nulla purus mattis sem, quis auctor erat odio ac tellus. In nec nunc sit amet \
2438+
diam volutpat molestie at sed ipsum. Vestibulum laoreet consequat vulputate. Integer accumsan \
2439+
lorem ac dignissim placerat. Suspendisse convallis faucibus lorem. Aliquam erat volutpat. In vel \
2440+
eleifend felis. Sed suscipit nulla lorem, sed mollis est sollicitudin et. Nam fermentum egestas \
2441+
interdum. Curabitur ut nisi justo.
2442+
2443+
Sed sollicitudin ipsum tellus, ut condimentum leo eleifend nec. Cras ut velit ante. Phasellus nec \
2444+
mollis odio. Mauris molestie erat in arcu mattis, at aliquet dolor vehicula. Quisque malesuada \
2445+
lectus sit amet nisi pretium, a condimentum ipsum porta. Morbi at dapibus diam. Praesent egestas \
2446+
est sed risus elementum, eu rutrum metus ultrices. Etiam fermentum consectetur magna, id rutrum \
2447+
felis accumsan a. Aliquam ut pellentesque libero. Sed mi nulla, lobortis eu tortor id, suscipit \
2448+
ultricies neque. Morbi iaculis sit amet risus at iaculis. Praesent eget ligula quis turpis \
2449+
feugiat suscipit vel non arcu. Interdum et malesuada fames ac ante ipsum primis in faucibus. \
2450+
Aliquam sit amet placerat lorem.
2451+
2452+
Cras a lacus vel ante posuere elementum. Nunc est leo, bibendum ut facilisis vel, bibendum at \
2453+
mauris. Nullam adipiscing diam vel odio ornare, luctus adipiscing mi luctus. Nulla facilisi. \
2454+
Mauris adipiscing bibendum neque, quis adipiscing lectus tempus et. Sed feugiat erat et nisl \
2455+
lobortis pharetra. Donec vitae erat enim. Nullam sit amet felis et quam lacinia tincidunt. Aliquam \
2456+
suscipit dapibus urna. Sed volutpat urna in magna pulvinar volutpat. Phasellus nec tellus ac diam \
2457+
cursus accumsan.
2458+
2459+
Nam lectus enim, dapibus non nisi tempor, consectetur convallis massa. Maecenas eleifend dictum \
2460+
feugiat. Etiam quis mauris vel risus luctus mattis a a nunc. Nullam orci quam, imperdiet id \
2461+
vehicula in, porttitor ut nibh. Duis sagittis adipiscing nisl vitae congue. Donec mollis risus eu \
2462+
leo suscipit, varius porttitor nulla porta. Pellentesque ut sem nec nisi euismod vehicula. Nulla \
2463+
malesuada sollicitudin quam eu fermentum.";
2464+
let needle = "english";
2465+
2466+
b.iter(|| {
2467+
assert!(!haystack.contains(needle));
2468+
})
2469+
}
2470+
2471+
#[bench]
2472+
fn bench_contains_bad_naive(b: &mut Bencher) {
2473+
let haystack = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
2474+
let needle = "aaaaaaaab";
2475+
2476+
b.iter(|| {
2477+
assert!(!haystack.contains(needle));
2478+
})
2479+
}
2480+
2481+
#[bench]
2482+
fn bench_contains_equal(b: &mut Bencher) {
2483+
let haystack = "Lorem ipsum dolor sit amet, consectetur adipiscing elit.";
2484+
let needle = "Lorem ipsum dolor sit amet, consectetur adipiscing elit.";
2485+
2486+
b.iter(|| {
2487+
assert!(haystack.contains(needle));
2488+
})
2489+
}
24162490
}

0 commit comments

Comments
 (0)