Compare commits
2 Commits
9285ee2853
...
10947620c1
Author | SHA1 | Date | |
---|---|---|---|
10947620c1 | |||
211cf06f29 |
@ -1,7 +1,7 @@
|
||||
[workspace]
|
||||
members = [
|
||||
"nbt-test",
|
||||
# "shen-nbt1", # EOL!
|
||||
"shen-nbt1", # EOL!
|
||||
"shen-nbt2",
|
||||
"shen-nbt3",
|
||||
"shen-nbt4",
|
||||
|
60
README.md
60
README.md
@ -36,45 +36,41 @@ writen in rust!
|
||||
```text
|
||||
❯ cargo run --release -- .\test-data\test-zip
|
||||
|
||||
Hello, nbt!
|
||||
============ small test ============
|
||||
=== nbt v1 ===
|
||||
time: 1.2222941s speed: 1263.1984397208494 (bytes/sec)
|
||||
1.233592226289892 (kb/sec)
|
||||
0.0012046799084862226 (mb/sec)
|
||||
1.1764452231310768e-6 (gb/sec)
|
||||
10 5
|
||||
Level
|
||||
time: 872.8818ms
|
||||
speed: 1768.853469049303 (bytes/s)
|
||||
1.72739596586846 (KB/s)
|
||||
=== nbt v2 ===
|
||||
time: 269.1µs speed: 5737643.9985135645 (bytes/sec)
|
||||
5603.167967298403 (kb/sec)
|
||||
5.4718437180648465 (mb/sec)
|
||||
0.005343597380922702 (gb/sec)
|
||||
time: 33.9µs
|
||||
speed: 45545722.71386431 (bytes/s)
|
||||
44478.24483775812 (KB/s)
|
||||
43.43578597437316 (MB/s)
|
||||
=== nbt v3 ===
|
||||
time: 58µs speed: 26620689.655172415 (bytes/sec)
|
||||
25996.76724137931 (kb/sec)
|
||||
25.387468009159484 (mb/sec)
|
||||
0.02479244922769481 (gb/sec)
|
||||
10 5
|
||||
Level
|
||||
time: 54.7µs
|
||||
speed: 28226691.04204753 (bytes/s)
|
||||
27565.12797074954 (KB/s)
|
||||
26.9190702839351 (MB/s)
|
||||
=== nbt v4 ===
|
||||
time: 211.7µs speed: 7293339.631554086 (bytes/sec)
|
||||
7122.401983939537 (kb/sec)
|
||||
6.955470687440954 (mb/sec)
|
||||
0.006792451843204057 (gb/sec)
|
||||
time: 24.3µs
|
||||
speed: 63539094.65020576 (bytes/s)
|
||||
62049.897119341564 (KB/s)
|
||||
60.595602655606996 (MB/s)
|
||||
=== nbt v5 ===
|
||||
time: 34.6µs speed: 44624277.456647396 (bytes/sec)
|
||||
43578.39595375722 (kb/sec)
|
||||
42.55702729859104 (mb/sec)
|
||||
0.04155959697128031 (gb/sec)
|
||||
time: 23.7µs
|
||||
speed: 65147679.32489452 (bytes/s)
|
||||
63620.7805907173 (KB/s)
|
||||
62.129668545622366 (MB/s)
|
||||
=== fastnbt ===
|
||||
time: 37.7µs speed: 40954907.161803715 (bytes/sec)
|
||||
39995.02652519894 (kb/sec)
|
||||
39.05764309101459 (mb/sec)
|
||||
0.038142229581068936 (gb/sec)
|
||||
time: 28.9µs
|
||||
speed: 53425605.536332175 (bytes/s)
|
||||
52173.44290657439 (KB/s)
|
||||
50.95062783845155 (MB/s)
|
||||
============ cli test ============
|
||||
=== shen nbt 5 ===
|
||||
time: 2.2960054s speed: 2509544103.424147 (bytes/sec)
|
||||
2450726.6635001437 (kb/sec)
|
||||
2393.287757324359 (mb/sec)
|
||||
2.3371950755120694 (gb/sec)
|
||||
time: 2.2855815sspeed: 2520989434.4174557 (bytes/s)
|
||||
2461903.7445482966 (KB/s)
|
||||
2404.202875535446 (MB/s)
|
||||
2.347854370640084 (GB/s)
|
||||
```
|
||||
|
@ -116,24 +116,32 @@ fn big_read_test() {
|
||||
read_test(data.to_vec());
|
||||
}
|
||||
|
||||
pub fn print_speed(speed: f64) {
|
||||
println!("speed: {} (bytes/s)", speed);
|
||||
let speeds = vec![
|
||||
speed / 1024.0,
|
||||
speed / 1024.0 / 1024.0,
|
||||
speed / 1024.0 / 1024.0 / 1024.0,
|
||||
speed / 1024.0 / 1024.0 / 1024.0 / 1024.0,
|
||||
];
|
||||
// 只输出 > 1024 的
|
||||
for (i, speed) in speeds.iter().enumerate() {
|
||||
if *speed > 1.0 {
|
||||
println!("{:?} ({}/s)", speed, ["KB", "MB", "GB", "TB"][i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
macro_rules! test_lib {
|
||||
($func: block, $name: expr, $len: expr) => {
|
||||
std::thread::sleep(std::time::Duration::from_secs(1));
|
||||
std::thread::sleep(std::time::Duration::from_micros(100));
|
||||
let start_time = std::time::Instant::now();
|
||||
$func
|
||||
let end_time = std::time::Instant::now();
|
||||
println!("=== {} ===", $name);
|
||||
print!("time: {:?}", end_time - start_time);
|
||||
println!(" speed: {:?} (bytes/sec)", $len as f64 / (end_time - start_time).as_secs_f64());
|
||||
println!("{:?} (kb/sec)", $len as f64 / (end_time - start_time).as_secs_f64() / 1024.0);
|
||||
println!(
|
||||
"{:?} (mb/sec)",
|
||||
$len as f64 / (end_time - start_time).as_secs_f64() / 1024.0 / 1024.0
|
||||
);
|
||||
println!(
|
||||
"{:?} (gb/sec)",
|
||||
$len as f64 / (end_time - start_time).as_secs_f64() / 1024.0 / 1024.0 / 1024.0
|
||||
);
|
||||
println!("time: {:?}", end_time - start_time);
|
||||
let raw_speed = $len as f64 / (end_time - start_time).as_secs_f64();
|
||||
print_speed(raw_speed);
|
||||
#[cfg(feature = "core_debug")]
|
||||
println!("nbt_data: {:#?}", nbt_data);
|
||||
};
|
||||
@ -252,16 +260,8 @@ fn cli_read_test() {
|
||||
let end_time = std::time::Instant::now();
|
||||
println!("=== shen nbt 5 ===");
|
||||
print!("time: {:?}", end_time - start_time);
|
||||
println!(" speed: {:?} (bytes/sec)", len as f64 / (end_time - start_time).as_secs_f64());
|
||||
println!("{:?} (kb/sec)", len as f64 / (end_time - start_time).as_secs_f64() / 1024.0);
|
||||
println!(
|
||||
"{:?} (mb/sec)",
|
||||
len as f64 / (end_time - start_time).as_secs_f64() / 1024.0 / 1024.0
|
||||
);
|
||||
println!(
|
||||
"{:?} (gb/sec)",
|
||||
len as f64 / (end_time - start_time).as_secs_f64() / 1024.0 / 1024.0 / 1024.0
|
||||
);
|
||||
let raw_speed = len as f64 / (end_time - start_time).as_secs_f64();
|
||||
print_speed(raw_speed);
|
||||
#[cfg(feature = "core_debug")]
|
||||
println!("nbt_data: {:#?}", nbt_data);
|
||||
// println!("nbt len {}", nbt_data.as_byte().is_some());
|
||||
|
@ -473,9 +473,7 @@ impl<'value> Value<'value> {
|
||||
let mut nbt_data = NbtData::new(data);
|
||||
let _type_id = nbt_data.read_byte();
|
||||
let _name_len = nbt_data.read_short();
|
||||
println!("{} {}", _type_id, _name_len);
|
||||
let name = String::from_utf8(nbt_data.read_bytes(_name_len as usize)).unwrap();
|
||||
println!("{}", name);
|
||||
Value::read_compound(&mut nbt_data)
|
||||
}
|
||||
}
|
||||
|
@ -429,9 +429,7 @@ impl<'value> Value<'value> {
|
||||
let mut nbt_data = NbtData::new(&mut data[..]);
|
||||
let _type_id = nbt_data.read_byte();
|
||||
let _name_len = nbt_data.read_short();
|
||||
// println!("{} {}", _type_id, _name_len);
|
||||
let _name = String::from_utf8(nbt_data.read_bytes(_name_len as usize)).unwrap();
|
||||
// println!("{}", _name);
|
||||
Value::read_compound(&mut nbt_data)
|
||||
}
|
||||
}
|
||||
|
@ -468,9 +468,7 @@ impl<'value> Value<'value> {
|
||||
let mut nbt_data = NbtData::new(data);
|
||||
let _type_id = nbt_data.read_byte();
|
||||
let _name_len = nbt_data.read_short();
|
||||
println!("{} {}", _type_id, _name_len);
|
||||
let name = String::from_utf8(nbt_data.read_bytes(_name_len as usize)).unwrap();
|
||||
println!("{}", name);
|
||||
Value::read_compound(&mut nbt_data)
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user