Skip to content

Commit f9e4d83

Browse files
committed
[szs] Misc improvements
1 parent a42585e commit f9e4d83

File tree

4 files changed

+40
-14
lines changed

4 files changed

+40
-14
lines changed

source/szs/benches/deinterlace_bench.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,10 @@ use std::io::Read;
55
use szs;
66

77
pub fn deinterlace_benchmark(c: &mut Criterion) {
8+
/*
89
let mut file = File::open("8-43.szs").expect("File not found");
910
let mut data = Vec::new();
1011
file.read_to_end(&mut data).expect("Error reading file");
11-
/*
1212
c.bench_function("deinterlace without C version", |b| {
1313
b.iter(|| {
1414
szs::deinterlace(black_box(&data) /*, black_box(false)*/).expect("Deinterlace failed")

source/szs/benches/mkw_bench.rs

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ use std::io::Read;
55
use szs;
66

77
pub fn mkw_benches(c: &mut Criterion) {
8-
let mut file = File::open("../../tests/samples/old_koopa_64.arc").expect("File not found");
8+
let mut file = File::open("../../tests/samples_szs/old_koopa_64.arc").expect("File not found");
99
let mut data = Vec::new();
1010
file.read_to_end(&mut data).expect("Error reading file");
1111

@@ -35,12 +35,31 @@ pub fn mkw_benches(c: &mut Criterion) {
3535
});
3636
}
3737

38+
pub fn mk8_benches2(c: &mut Criterion) {
39+
let mut file = File::open("../../tests/samples_szs/8-43.arc").expect("File not found");
40+
let mut data = Vec::new();
41+
file.read_to_end(&mut data).expect("Error reading file");
42+
43+
44+
c.bench_function("Rust encoder", |b| {
45+
b.iter(|| {
46+
szs::encode(black_box(&data), black_box(szs::EncodeAlgo::MK8_Rust))
47+
.expect("encode failed")
48+
})
49+
});
50+
c.bench_function("C encoder", |b| {
51+
b.iter(|| {
52+
szs::encode(black_box(&data), black_box(szs::EncodeAlgo::MK8)).expect("encode failed")
53+
})
54+
});
55+
}
56+
3857
pub fn configure() -> Criterion {
39-
Criterion::default().sample_size(100)
58+
Criterion::default()
4059
}
4160
criterion_group! {
4261
name = benches;
4362
config = configure();
44-
targets = mkw_benches
63+
targets = mk8_benches2
4564
}
4665
criterion_main!(benches);

source/szs/szstool/Cargo.lock

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

source/szs/szstool/src/main.rs

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ use anyhow;
22
use clap::{Arg, Command};
33
use std::fs;
44
use std::str::FromStr;
5+
use std::time::Instant;
56
use szs;
67
use szs::{encode, EncodeAlgo, Error};
78

@@ -71,18 +72,24 @@ fn main() {
7172
}
7273
};
7374

74-
match szs::encode(&input_data, algorithm) {
75-
Ok(encoded_data) => {
76-
if let Err(err) = fs::write(output_file, &encoded_data) {
77-
eprintln!("Error writing output file: {}", err);
78-
std::process::exit(1);
79-
} else {
80-
println!("Data encoded successfully.");
81-
}
82-
}
75+
// Measure the time taken for the compression
76+
let start_time = Instant::now();
77+
let encoded_data = match szs::encode(&input_data, algorithm) {
78+
Ok(data) => data,
8379
Err(err) => {
8480
eprintln!("Error encoding data: {:?}", err);
8581
std::process::exit(1);
8682
}
83+
};
84+
let duration = start_time.elapsed();
85+
let compression_rate = encoded_data.len() as f64 / input_data.len() as f64;
86+
87+
if let Err(err) = fs::write(output_file, &encoded_data) {
88+
eprintln!("Error writing output file: {}", err);
89+
std::process::exit(1);
8790
}
91+
92+
println!("Data encoded successfully.");
93+
println!("Time taken for compression: {:?}", duration);
94+
println!("Compression rate: {:.2}", compression_rate);
8895
}

0 commit comments

Comments
 (0)