File tree 2 files changed +19
-2
lines changed
2 files changed +19
-2
lines changed Original file line number Diff line number Diff line change @@ -3,7 +3,7 @@ extern crate diff;
3
3
4
4
use criterion:: Criterion ;
5
5
6
- criterion:: criterion_group!( benches, bench_slice) ;
6
+ criterion:: criterion_group!( benches, bench_slice, bench_chars ) ;
7
7
criterion:: criterion_main!( benches) ;
8
8
9
9
fn bench_slice ( c : & mut Criterion ) {
@@ -42,3 +42,12 @@ fn bench_slice(c: &mut Criterion) {
42
42
b. iter ( || :: diff:: slice ( & left, & right) ) ;
43
43
} ) ;
44
44
}
45
+
46
+ fn bench_chars ( c : & mut Criterion ) {
47
+ c. bench_function ( "1024 byte string, last 256 different" , |b| {
48
+ let left = "?" . repeat ( 768 ) + & "_" . repeat ( 256 ) ;
49
+ let right = "?" . repeat ( 768 ) + & "!" . repeat ( 256 ) ;
50
+ assert_eq ! ( left. len( ) , right. len( ) ) ;
51
+ b. iter ( || :: diff:: chars ( & left, & right) ) ;
52
+ } ) ;
53
+ }
Original file line number Diff line number Diff line change 67
67
let table: Vec < Vec < u32 > > = {
68
68
let mut table = vec ! [ vec![ 0 ; right_diff_size + 1 ] ; left_diff_size + 1 ] ;
69
69
let left_skip = left. clone ( ) . skip ( leading_equals) . take ( left_diff_size) ;
70
- let right_skip = right. clone ( ) . skip ( leading_equals) . take ( right_diff_size) ;
70
+ let right_skip = advance_by ( right. clone ( ) , leading_equals) . take ( right_diff_size) ;
71
71
72
72
for ( i, l) in left_skip. clone ( ) . enumerate ( ) {
73
73
for ( j, r) in right_skip. clone ( ) . enumerate ( ) {
@@ -126,3 +126,11 @@ where
126
126
127
127
total_diff
128
128
}
129
+
130
+ #[ inline]
131
+ fn advance_by < I : Iterator > ( mut iter : I , by : usize ) -> I {
132
+ for _ in 0 ..by {
133
+ iter. next ( ) ;
134
+ }
135
+ iter
136
+ }
You can’t perform that action at this time.
0 commit comments