compare/
compare.rs

1use reflink;
2
3use std::time::Instant;
4use std::io::{self, Read};
5use std::fs;
6
7fn main() {
8    let mut base_file = fs::File::create("base.txt").unwrap();
9    let mut src = io::repeat(65).take(100 * 1024 * 1024); // 100 MB
10    io::copy(&mut src, &mut base_file).unwrap();
11
12    let before_reflink = Instant::now();
13    match reflink::reflink("base.txt", "reflinked.txt") {
14        Ok(()) => {},
15        Err(e) => {
16            println!("Error during reflinking:\n{:?}", e);
17            fs::remove_file("base.txt").unwrap();
18            return;
19        }
20    };
21    println!("Time to reflink: {:?}", Instant::now() - before_reflink);
22
23    let before_copy = Instant::now();
24    fs::copy("base.txt", "copied.txt").unwrap();
25    println!("Time to copy: {:?}", Instant::now() - before_copy);
26
27    fs::remove_file("base.txt").unwrap();
28    fs::remove_file("reflinked.txt").unwrap();
29    fs::remove_file("copied.txt").unwrap();
30}