]>
Commit | Line | Data |
---|---|---|
3329ae8c DM |
1 | extern crate proxmox_backup; |
2 | ||
3 | use proxmox_backup::backup::chunker::*; | |
4 | ||
5 | fn main() { | |
6 | ||
7 | let mut buffer = Vec::new(); | |
8 | ||
ea4ea34b | 9 | for i in 0..20*1024*1024 { |
3329ae8c DM |
10 | for j in 0..4 { |
11 | let byte = ((i >> (j<<3))&0xff) as u8; | |
12 | //println!("BYTE {}", byte); | |
13 | buffer.push(byte); | |
14 | } | |
15 | } | |
ea4ea34b | 16 | let mut chunker = Chunker::new(64*1024); |
3329ae8c | 17 | |
ea4ea34b | 18 | let count = 5; |
3329ae8c DM |
19 | |
20 | let start = std::time::SystemTime::now(); | |
ea4ea34b DM |
21 | |
22 | let mut chunk_count = 0; | |
3329ae8c DM |
23 | |
24 | for _i in 0..count { | |
25 | let mut pos = 0; | |
ea4ea34b | 26 | let mut last = 0; |
3329ae8c DM |
27 | while pos < buffer.len() { |
28 | let k = chunker.scan(&buffer[pos..]); | |
29 | if k == 0 { | |
30 | //println!("LAST {}", pos); | |
31 | break; | |
32 | } else { | |
ea4ea34b | 33 | last = pos; |
3329ae8c | 34 | pos += k; |
ea4ea34b DM |
35 | chunk_count += 1; |
36 | //println!("CHUNK {} {}", pos, pos-last); | |
3329ae8c DM |
37 | } |
38 | } | |
39 | } | |
40 | ||
41 | let elapsed = start.elapsed().unwrap(); | |
42 | let elapsed = (elapsed.as_secs() as f64) + | |
43 | (elapsed.subsec_millis() as f64)/1000.0; | |
44 | ||
45 | let mbytecount = ((count*buffer.len()) as f64) / (1024.0*1024.0); | |
ea4ea34b | 46 | let avg_chunk_size = mbytecount/(chunk_count as f64); |
3329ae8c | 47 | let mbytes_per_sec = mbytecount/elapsed; |
ea4ea34b | 48 | println!("SPEED = {} MB/s, avg chunk size = {} KB", mbytes_per_sec, avg_chunk_size*1024.0); |
3329ae8c | 49 | } |