@@ -6,15 +6,13 @@ use chunkfs::chunkers::{
66 FSChunker , LeapChunker , RabinChunker , SeqChunker , SizeParams , SuperChunker , UltraChunker ,
77} ;
88use chunkfs:: hashers:: Sha256Hasher ;
9- use chunkfs:: { ChunkerRef , FileSystem } ;
10- use chunkfs:: chunkers:: seq:: OperationMode ;
11- use sbc_algorithm:: decoders;
12- use sbc_algorithm:: encoders;
9+ use chunkfs:: FileSystem ;
10+ use sbc_algorithm:: { decoders, encoders} ;
1311use sbc_algorithm:: { SBCMap , SBCScrubber } ;
1412use std:: collections:: HashMap ;
15- use std:: fs:: OpenOptions ;
16- use std:: io:: { self , Write } ;
17- use std :: time :: Instant ;
13+ use std:: fs;
14+ use std:: io;
15+
1816#[ allow( dead_code) ]
1917const MB : usize = 1024 * 1024 ;
2018
@@ -25,72 +23,21 @@ fn generate_data(mb_size: usize) -> Vec<u8> {
2523}
2624
2725fn main ( ) -> io:: Result < ( ) > {
28- let chunk_size = SizeParams :: new ( 2 * 1024 , 8 * 1024 , 12 * 1024 ) ;
29- let chunkers: Vec < ( & str , ChunkerRef ) > = vec ! [
30- ( "super" , SuperChunker :: new( chunk_size. clone( ) ) . into( ) ) ,
31- ( "fs" , FSChunker :: default ( ) . into( ) ) ,
32- ( "leap" , LeapChunker :: new( chunk_size. clone( ) ) . into( ) ) ,
33- ( "rabin" , RabinChunker :: new( chunk_size. clone( ) ) . into( ) ) ,
34- (
35- "seq" ,
36- SeqChunker :: new( OperationMode :: Increasing , chunk_size. clone( ) , Default :: default ( ) ) . into( ) ,
37- ) ,
38- ( "ultra" , UltraChunker :: new( chunk_size. clone( ) ) . into( ) ) ,
39- ] ;
40- let dataset_path = "runner/files/kernels.tar" ;
41- let mut out_file = OpenOptions :: new ( )
42- . write ( true )
43- . create ( true )
44- . truncate ( false )
45- . open ( "out-sbc-kernels-gdelta1.csv" ) ?;
46- writeln ! (
47- out_file,
48- "Chunker\t CDCReadTime(s)\t CDCWriteTime(s)\t CDCDedupRatio\t ScrubTime\t SBCReadTime\t SBCDedupRatio"
49- ) ?;
50-
51- for ( chunker_name, chunker_ref) in chunkers {
52- let data = std:: fs:: read ( dataset_path) ?;
53- let mut fs = FileSystem :: new_with_scrubber (
54- HashMap :: default ( ) ,
55- SBCMap :: new ( decoders:: GdeltaDecoder ) ,
56- Box :: new ( SBCScrubber :: new ( encoders:: GdeltaEncoder ) ) ,
57- Sha256Hasher :: default ( ) ,
58- ) ;
59- let mut handle = fs. create_file ( "file" . to_string ( ) , chunker_ref) ?;
60- let now = Instant :: now ( ) ;
61- fs. write_to_file ( & mut handle, & data) ?;
62- let cdc_write_time = now. elapsed ( ) ;
63- fs. close_file ( handle) ?;
64- let cdc_dedup_ratio = fs. cdc_dedup_ratio ( ) ;
65-
66- let handle = fs. open_file_readonly ( "file" . to_string ( ) ) ?;
67- let now = Instant :: now ( ) ;
68- fs. read_file_complete ( & handle) ?;
69- let cdc_read_time = now. elapsed ( ) ;
70-
71- let res = fs. scrub ( ) . unwrap ( ) ;
72- let sbc_dedup_ratio = fs. total_dedup_ratio ( ) ;
73-
74- let now = Instant :: now ( ) ;
75- fs. read_file_complete ( & handle) ?;
76- let sbc_read_time = now. elapsed ( ) ;
77-
78- writeln ! (
79- out_file,
80- "{}\t {:.10}\t {:.10}\t {:.10}\t {:.10}\t {:.10}\t {:.10}" ,
81- chunker_name,
82- cdc_read_time. as_secs_f64( ) ,
83- cdc_write_time. as_secs_f64( ) ,
84- cdc_dedup_ratio,
85- res. running_time. as_secs_f64( ) ,
86- sbc_read_time. as_secs_f64( ) ,
87- sbc_dedup_ratio
88- ) ?;
89- fs. clear_file_system ( ) ?;
90- println ! ( "Scrubber results: {res:?}" ) ;
91- println ! ( "CDChunking complete, dedup_ratio: {}" , cdc_dedup_ratio) ;
92- println ! ( "SBC dedup ratio: {}" , sbc_dedup_ratio) ;
93- println ! ( "delta: {}" , sbc_dedup_ratio - cdc_dedup_ratio) ;
94- }
26+ let data = fs:: read ( "runner/files/my_data" ) ?;
27+ let chunk_size = SizeParams :: new ( 2 * 1024 , 8 * 1024 , 16 * 1024 ) ;
28+ let mut fs = FileSystem :: new_with_scrubber (
29+ HashMap :: default ( ) ,
30+ SBCMap :: new ( decoders:: GdeltaDecoder ) ,
31+ Box :: new ( SBCScrubber :: new ( encoders:: GdeltaEncoder ) ) ,
32+ Sha256Hasher :: default ( ) ,
33+ ) ;
34+ let mut handle = fs. create_file ( "file" . to_string ( ) , SuperChunker :: new ( chunk_size) ) ?;
35+
36+ fs. write_to_file ( & mut handle, & data) ?;
37+ fs. close_file ( handle) ?;
38+ let cdc_dedup_ratio = fs. cdc_dedup_ratio ( ) ;
39+ let res = fs. scrub ( ) . unwrap ( ) ;
40+ let sbc_dedup_ratio = fs. total_dedup_ratio ( ) ;
41+ println ! ( "{}, {:?}, {}" , cdc_dedup_ratio, res, sbc_dedup_ratio) ;
9542 Ok ( ( ) )
9643}
0 commit comments