Skip to content

Commit 2f5ea5a

Browse files
committed
Fixed the bin fire you had going there
1 parent 4e2ac0b commit 2f5ea5a

File tree

6 files changed

+340
-293
lines changed

6 files changed

+340
-293
lines changed

compression_tester.py

+59
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
import bz2
2+
import gzip
3+
import lzma
4+
import time
5+
import zlib
6+
7+
results = {}
8+
9+
def compress_zlib_max(data):
10+
return zlib.compress(data, 9)
11+
12+
def compress_zlib_min(data):
13+
return zlib.compress(data, 1)
14+
15+
def compress_gzip_max(data):
16+
return gzip.compress(data, 5)
17+
18+
def compress_gzip_min(data):
19+
return gzip.compress(data, 1)
20+
21+
def compress_lzma(data):
22+
return lzma.compress(data)
23+
24+
def compress_bzip2_max(data):
25+
return bz2.compress(data, 9)
26+
27+
def compress_bzip2_min(data):
28+
return bz2.compress(data, 1)
29+
30+
def compress_none(data):
31+
return data
32+
33+
34+
with open(".etc/chunk.nbt", "rb") as f:
35+
data = f.read()
36+
original_size = len(data)
37+
for algo in [compress_zlib_max, compress_zlib_min, compress_gzip_max, compress_gzip_min, compress_lzma, compress_bzip2_max, compress_bzip2_min, compress_none]:
38+
print(f"Testing {algo.__name__}...")
39+
times = []
40+
sizediff = 0
41+
for iteration in range(1, 3000):
42+
start = time.time_ns()
43+
compressed = algo(data)
44+
end = time.time_ns()
45+
times.append(end - start)
46+
sizediff = len(compressed) / original_size
47+
average_time = (sum(times) / len(times) / 1000) / 1000
48+
results[algo.__name__] = {
49+
"average_time": average_time,
50+
"size_decrease_percentage": sizediff
51+
}
52+
for result in results:
53+
name = result
54+
average_time = results[result]["average_time"]
55+
sizediff = results[result]["size_decrease_percentage"]
56+
print(f"Algorithm: {name}")
57+
print(f"Average Time: {average_time:.3f} ms")
58+
print(f"Compressed Size: {sizediff*100:.2f}% of original size")
59+
print()

src/benches/bench_nbt_ser_de.rs

+13-14
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,11 @@
1-
use std::io::{Cursor, Write};
2-
3-
use criterion::{black_box, criterion_group, criterion_main, Criterion};
4-
use nbt_lib::{read_tag, NBTDeserialize, NBTDeserialize, NBTSerialize, NBTSerialize};
1+
use std::io::Cursor;
52

63
use crate::test_simd_de_data::MinecraftChunk;
4+
use criterion::{black_box, criterion_group, criterion_main, Criterion};
5+
use nbt_lib::{read_tag, NBTSerialize};
76

87
mod test_de_data {
9-
use super::*;
8+
use nbt_lib::{NBTDeserialize, NBTSerialize};
109

1110
#[derive(NBTSerialize, NBTDeserialize, Debug, Clone)]
1211
#[nbt(is_root)]
@@ -78,7 +77,7 @@ mod test_de_data {
7877
language: String,
7978
}
8079

81-
pub fn create_test_player() -> Player {
80+
pub fn _create_test_player() -> Player {
8281
Player {
8382
name: "SuperPlayer123".to_string(),
8483
age: 25,
@@ -174,7 +173,7 @@ mod test_de_data {
174173
}
175174
}
176175
mod test_simd_de_data {
177-
use super::*;
176+
use nbt_lib::{NBTDeserialize, NBTSerialize};
178177

179178
#[derive(NBTSerialize, NBTDeserialize, Debug)]
180179
#[nbt(rename = "Level")]
@@ -286,7 +285,7 @@ fn benchmark_serialization(c: &mut Criterion) {
286285
c.bench_function("serialize", |b| {
287286
b.iter(|| {
288287
let mut buffer = Vec::with_capacity(10240);
289-
black_box(world.serialize(&mut buffer)).unwrap();
288+
black_box(world.nbt_serialize(&mut buffer)).unwrap();
290289
})
291290
});
292291
}
@@ -306,7 +305,7 @@ fn benchmark_serialization(c: &mut Criterion) {
306305
}
307306
*/
308307

309-
fn get_nbt_buffer() -> Vec<u8> {
308+
fn _get_nbt_buffer() -> Vec<u8> {
310309
/*let mut buffer = std::fs::read(".etc/TheAIguy_.nbt").unwrap();
311310
312311
// decompress gzip
@@ -323,13 +322,13 @@ fn get_nbt_buffer() -> Vec<u8> {
323322
let data = MinecraftChunk::create_test_instance();
324323

325324
let mut buffer = Vec::with_capacity(2048);
326-
data.serialize(&mut buffer).unwrap();
325+
data.nbt_serialize(&mut buffer).unwrap();
327326

328327
buffer
329328
}
330329

331-
fn benchmark_raw_deserialization(c: &mut Criterion) {
332-
let buffer = get_nbt_buffer();
330+
fn _benchmark_raw_deserialization(c: &mut Criterion) {
331+
let buffer = _get_nbt_buffer();
333332
let mut cursor = Cursor::new(buffer);
334333

335334
c.bench_function("world_chunk_deser_raw", |b| {
@@ -342,8 +341,8 @@ fn benchmark_raw_deserialization(c: &mut Criterion) {
342341
})
343342
});
344343
}
345-
fn benchmark_simdnbt_deserialization(c: &mut Criterion) {
346-
let buffer = get_nbt_buffer();
344+
fn _benchmark_simdnbt_deserialization(c: &mut Criterion) {
345+
let buffer = _get_nbt_buffer();
347346

348347
let buffer = buffer.as_slice();
349348

0 commit comments

Comments
 (0)