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