mirror of
				https://git.proxmox.com/git/proxmox-backup
				synced 2025-11-02 15:18:42 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			52 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Rust
		
	
	
	
	
	
			
		
		
	
	
			52 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Rust
		
	
	
	
	
	
extern crate proxmox_backup;
 | 
						|
 | 
						|
use pbs_datastore::Chunker;
 | 
						|
 | 
						|
fn main() {
 | 
						|
    let mut buffer = Vec::new();
 | 
						|
 | 
						|
    for i in 0..20 * 1024 * 1024 {
 | 
						|
        for j in 0..4 {
 | 
						|
            let byte = ((i >> (j << 3)) & 0xff) as u8;
 | 
						|
            //println!("BYTE {}", byte);
 | 
						|
            buffer.push(byte);
 | 
						|
        }
 | 
						|
    }
 | 
						|
    let mut chunker = Chunker::new(64 * 1024);
 | 
						|
 | 
						|
    let count = 5;
 | 
						|
 | 
						|
    let start = std::time::SystemTime::now();
 | 
						|
 | 
						|
    let mut chunk_count = 0;
 | 
						|
 | 
						|
    for _i in 0..count {
 | 
						|
        let mut pos = 0;
 | 
						|
        let mut _last = 0;
 | 
						|
        while pos < buffer.len() {
 | 
						|
            let k = chunker.scan(&buffer[pos..]);
 | 
						|
            if k == 0 {
 | 
						|
                //println!("LAST {}", pos);
 | 
						|
                break;
 | 
						|
            } else {
 | 
						|
                _last = pos;
 | 
						|
                pos += k;
 | 
						|
                chunk_count += 1;
 | 
						|
                //println!("CHUNK {} {}", pos, pos-last);
 | 
						|
            }
 | 
						|
        }
 | 
						|
    }
 | 
						|
 | 
						|
    let elapsed = start.elapsed().unwrap();
 | 
						|
    let elapsed = (elapsed.as_secs() as f64) + (elapsed.subsec_millis() as f64) / 1000.0;
 | 
						|
 | 
						|
    let mbytecount = ((count * buffer.len()) as f64) / (1024.0 * 1024.0);
 | 
						|
    let avg_chunk_size = mbytecount / (chunk_count as f64);
 | 
						|
    let mbytes_per_sec = mbytecount / elapsed;
 | 
						|
    println!(
 | 
						|
        "SPEED = {} MB/s, avg chunk size = {} KB",
 | 
						|
        mbytes_per_sec,
 | 
						|
        avg_chunk_size * 1024.0
 | 
						|
    );
 | 
						|
}
 |