过于夸张的提升了(
This commit is contained in:
parent
087b318e8d
commit
529c6abcb3
2
Cargo.lock
generated
2
Cargo.lock
generated
@ -1831,7 +1831,7 @@ checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b"
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "tswn"
|
name = "tswn"
|
||||||
version = "0.1.2"
|
version = "0.1.3"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"base16384",
|
"base16384",
|
||||||
"chrono",
|
"chrono",
|
||||||
|
@ -2,6 +2,8 @@
|
|||||||
|
|
||||||
## 0.1.1
|
## 0.1.1
|
||||||
|
|
||||||
|
> 445E/d
|
||||||
|
|
||||||
```text
|
```text
|
||||||
2024-04-25T14:38:37.928073Z INFO tswn: 输出文件: "./namerena/namerena-shenjacks-2024-04-25_22-38-37.txt"
|
2024-04-25T14:38:37.928073Z INFO tswn: 输出文件: "./namerena/namerena-shenjacks-2024-04-25_22-38-37.txt"
|
||||||
2024-04-25T14:38:37.928448Z INFO tswn: 开始: 0 结尾: 100000000
|
2024-04-25T14:38:37.928448Z INFO tswn: 开始: 0 结尾: 100000000
|
||||||
@ -23,6 +25,8 @@
|
|||||||
|
|
||||||
## 0.1.2
|
## 0.1.2
|
||||||
|
|
||||||
|
> 478E/d
|
||||||
|
|
||||||
```text
|
```text
|
||||||
2024-04-25T14:49:18.046424Z INFO tswn: 输出文件: "./namerena/namerena-shenjacks-2024-04-25_22-49-18.txt"
|
2024-04-25T14:49:18.046424Z INFO tswn: 输出文件: "./namerena/namerena-shenjacks-2024-04-25_22-49-18.txt"
|
||||||
2024-04-25T14:49:18.046647Z INFO tswn: 开始: 0 结尾: 100000000
|
2024-04-25T14:49:18.046647Z INFO tswn: 开始: 0 结尾: 100000000
|
||||||
@ -44,3 +48,29 @@
|
|||||||
2024-04-25T14:50:47.147717Z INFO tswn::cacluate: | 1|Id: 49445420|552772.98/s 477.596E/d 10.05⬇️|0 |预计:0:1:31|
|
2024-04-25T14:50:47.147717Z INFO tswn::cacluate: | 1|Id: 49445420|552772.98/s 477.596E/d 10.05⬇️|0 |预计:0:1:31|
|
||||||
2024-04-25T14:50:57.108934Z INFO tswn::cacluate: | 1|Id: 54973140|554932.97/s 479.462E/d 9.96⬆️|0 |预计:0:1:21|
|
2024-04-25T14:50:57.108934Z INFO tswn::cacluate: | 1|Id: 54973140|554932.97/s 479.462E/d 9.96⬆️|0 |预计:0:1:21|
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## 0.1.3
|
||||||
|
|
||||||
|
> 550E/d
|
||||||
|
|
||||||
|
```text
|
||||||
|
2024-04-25T15:02:14.455532Z INFO tswn: 输出文件: "./namerena/namerena-shenjacks-2024-04-25_23-02-14.txt"
|
||||||
|
2024-04-25T15:02:14.455701Z INFO tswn: 开始: 0 结尾: 100000000
|
||||||
|
2024-04-25T15:02:14.455757Z INFO tswn: 线程数: 1
|
||||||
|
2024-04-25T15:02:14.455806Z INFO tswn: 八围预期: 640
|
||||||
|
2024-04-25T15:02:14.455853Z INFO tswn: 队伍名: shenjacks
|
||||||
|
2024-04-25T15:02:14.455899Z INFO tswn: 输出文件名: "./namerena/namerena-shenjacks-2024-04-25_23-02-14.txt"
|
||||||
|
2024-04-25T15:02:14.455979Z INFO tswn: 开始计算
|
||||||
|
2024-04-25T15:02:14.456032Z INFO tswn: 线程 thread_0 开始计算
|
||||||
|
2024-04-25T15:02:14.471838Z INFO tswn::cacluate: | 1|Id: 10000|635833.00/s 549.360E/d 0.02⬆️|0 |预计:0:2:37|
|
||||||
|
2024-04-25T15:02:24.556257Z INFO tswn::cacluate: | 1|Id: 6368330|630517.99/s 544.768E/d 10.08⬇️|0 |预计:0:2:28|
|
||||||
|
2024-04-25T15:02:34.374117Z INFO tswn::cacluate: | 1|Id: 12673500|642224.18/s 554.882E/d 9.82⬆️|0 |预计:0:2:15|
|
||||||
|
2024-04-25T15:02:44.419013Z INFO tswn::cacluate: | 1|Id: 19095740|639400.29/s 552.442E/d 10.04⬇️|0 |预计:0:2:6|
|
||||||
|
2024-04-25T15:02:54.349142Z INFO tswn::cacluate: | 1|Id: 25489740|643910.74/s 556.339E/d 9.93⬆️|0 |预计:0:1:55|
|
||||||
|
2024-04-25T15:03:04.362691Z INFO tswn::cacluate: | 1|Id: 31928840|643051.51/s 555.597E/d 10.01⬇️|0 |预计:0:1:45|
|
||||||
|
2024-04-25T15:03:14.336906Z INFO tswn::cacluate: | 1|Id: 38359350|644727.96/s 557.045E/d 9.97⬆️|0 |预计:0:1:35|
|
||||||
|
2024-04-25T15:03:24.423038Z INFO tswn::cacluate: | 1|Id: 44806620|639233.80/s 552.298E/d 10.09⬇️|0 |预计:0:1:26|
|
||||||
|
2024-04-25T15:03:34.344623Z INFO tswn::cacluate: | 1|Id: 51198950|644297.20/s 556.673E/d 9.92⬆️|0 |预计:0:1:15|
|
||||||
|
2024-04-25T15:03:44.331352Z INFO tswn::cacluate: | 1|Id: 57641920|645164.91/s 557.422E/d 9.99⬆️|0 |预计:0:1:5|
|
||||||
|
2024-04-25T15:03:54.332496Z INFO tswn::cacluate: | 1|Id: 64093560|645118.80/s 557.383E/d 10.00⬇️|0 |预计:0:0:55|
|
||||||
|
```
|
@ -1,7 +1,7 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "tswn"
|
name = "tswn"
|
||||||
description = "tool shenjack work shop namerena"
|
description = "tool shenjack work shop namerena"
|
||||||
version = "0.1.2"
|
version = "0.1.3"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
|
|
||||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||||
|
@ -138,18 +138,31 @@ impl Namer {
|
|||||||
let b_name_len = name_len + 1;
|
let b_name_len = name_len + 1;
|
||||||
for _ in 0..2 {
|
for _ in 0..2 {
|
||||||
let mut s = 0_u8;
|
let mut s = 0_u8;
|
||||||
unsafe { val.swap_unchecked(s as usize, 0) };
|
// unsafe { val.swap_unchecked(s as usize, 0) };
|
||||||
let mut k = 0;
|
// let mut k = 0;
|
||||||
for i in 0..256 {
|
// for i in 0..256 {
|
||||||
// s = s.wrapping_add(if k == 0 { 0 } else { name_bytes[k - 1] });
|
// s = s.wrapping_add(if k == 0 {
|
||||||
s = s.wrapping_add(if k == 0 {
|
// 0
|
||||||
0
|
// } else {
|
||||||
} else {
|
// *unsafe { name_bytes.get_unchecked(k - 1) }
|
||||||
*unsafe { name_bytes.get_unchecked(k - 1) }
|
// });
|
||||||
});
|
// s = s.wrapping_add(val[i]);
|
||||||
s = s.wrapping_add(val[i]);
|
// unsafe { val.swap_unchecked(i, s as usize) }
|
||||||
unsafe { val.swap_unchecked(i, s as usize) }
|
// k = if k == b_name_len - 1 { 0 } else { k + 1 };
|
||||||
k = if k == b_name_len - 1 { 0 } else { k + 1 };
|
// }
|
||||||
|
unsafe {
|
||||||
|
val.swap_unchecked(s as usize, 0);
|
||||||
|
let mut k = 0;
|
||||||
|
for i in 0..256 {
|
||||||
|
s = s.wrapping_add(if k == 0 {
|
||||||
|
0
|
||||||
|
} else {
|
||||||
|
*name_bytes.get_unchecked(k - 1)
|
||||||
|
});
|
||||||
|
s = s.wrapping_add(val[i]);
|
||||||
|
val.swap_unchecked(i, s as usize);
|
||||||
|
k = if k == b_name_len - 1 { 0 } else { k + 1 };
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// simd 优化
|
// simd 优化
|
||||||
@ -163,17 +176,14 @@ impl Namer {
|
|||||||
|
|
||||||
for i in (0..256).step_by(64) {
|
for i in (0..256).step_by(64) {
|
||||||
// 一次性加载64个数字
|
// 一次性加载64个数字
|
||||||
// let mut x = u8x64::from_slice(&simd_val[i..]);
|
|
||||||
let mut x = u8x64::from_slice(unsafe { simd_val.get_unchecked(i..) });
|
let mut x = u8x64::from_slice(unsafe { simd_val.get_unchecked(i..) });
|
||||||
x = x * simd_181 + simd_160;
|
x = x * simd_181 + simd_160;
|
||||||
// 写入到 simd_val
|
// 写入到 simd_val
|
||||||
// x.copy_to_slice(&mut simd_val[i..]);
|
|
||||||
unsafe {
|
unsafe {
|
||||||
x.copy_to_slice(simd_val.get_unchecked_mut(i..));
|
x.copy_to_slice(simd_val.get_unchecked_mut(i..));
|
||||||
}
|
}
|
||||||
|
|
||||||
let y = x & simd_63;
|
let y = x & simd_63;
|
||||||
// y.copy_to_slice(&mut simd_val_b[i..]);
|
|
||||||
unsafe {
|
unsafe {
|
||||||
y.copy_to_slice(simd_val_b.get_unchecked_mut(i..));
|
y.copy_to_slice(simd_val_b.get_unchecked_mut(i..));
|
||||||
}
|
}
|
||||||
@ -182,14 +192,6 @@ impl Namer {
|
|||||||
let mut mod_count = 0;
|
let mut mod_count = 0;
|
||||||
|
|
||||||
for i in 0..96 {
|
for i in 0..96 {
|
||||||
// if simd_val[i] > 88 && simd_val[i] < 217 {
|
|
||||||
// // name_base[mod_count as usize] = simd_val_b[i];
|
|
||||||
// unsafe {
|
|
||||||
// *name_base.get_unchecked_mut(mod_count as usize) =
|
|
||||||
// *simd_val_b.get_unchecked(i);
|
|
||||||
// }
|
|
||||||
// mod_count += 1;
|
|
||||||
// }
|
|
||||||
unsafe {
|
unsafe {
|
||||||
if simd_val.get_unchecked(i) > &88 && simd_val.get_unchecked(i) < &217 {
|
if simd_val.get_unchecked(i) > &88 && simd_val.get_unchecked(i) < &217 {
|
||||||
*name_base.get_unchecked_mut(mod_count as usize) =
|
*name_base.get_unchecked_mut(mod_count as usize) =
|
||||||
@ -203,13 +205,12 @@ impl Namer {
|
|||||||
}
|
}
|
||||||
if mod_count < 31 {
|
if mod_count < 31 {
|
||||||
for i in 96..256 {
|
for i in 96..256 {
|
||||||
if simd_val[i] > 88 && simd_val[i] < 217 {
|
unsafe {
|
||||||
// name_base[mod_count as usize] = simd_val_b[i];
|
if simd_val.get_unchecked(i) > &88 && simd_val.get_unchecked(i) < &217 {
|
||||||
unsafe {
|
|
||||||
*name_base.get_unchecked_mut(mod_count as usize) =
|
*name_base.get_unchecked_mut(mod_count as usize) =
|
||||||
*simd_val_b.get_unchecked(i);
|
*simd_val_b.get_unchecked(i);
|
||||||
|
mod_count += 1;
|
||||||
}
|
}
|
||||||
mod_count += 1;
|
|
||||||
}
|
}
|
||||||
if mod_count > 30 {
|
if mod_count > 30 {
|
||||||
break;
|
break;
|
||||||
@ -231,20 +232,31 @@ impl Namer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 计算 name_prop
|
// 计算 name_prop
|
||||||
let mut prop_name = name_base[0..32].to_vec();
|
// let mut prop_name = name_base[0..32].to_vec();
|
||||||
prop_name[0..10].sort_unstable();
|
// prop_name[0..10].sort_unstable();
|
||||||
name_prop[0] = 154
|
// name_prop[0] = 154
|
||||||
+ prop_name[3] as u32
|
// + prop_name[3] as u32
|
||||||
+ prop_name[4] as u32
|
// + prop_name[4] as u32
|
||||||
+ prop_name[5] as u32
|
// + prop_name[5] as u32
|
||||||
+ prop_name[6] as u32;
|
// + prop_name[6] as u32;
|
||||||
name_prop[1] = median(prop_name[10], prop_name[11], prop_name[12]) as u32 + 36;
|
// name_prop[1] = median(prop_name[10], prop_name[11], prop_name[12]) as u32 + 36;
|
||||||
name_prop[2] = median(prop_name[13], prop_name[14], prop_name[15]) as u32 + 36;
|
// name_prop[2] = median(prop_name[13], prop_name[14], prop_name[15]) as u32 + 36;
|
||||||
name_prop[3] = median(prop_name[16], prop_name[17], prop_name[18]) as u32 + 36;
|
// name_prop[3] = median(prop_name[16], prop_name[17], prop_name[18]) as u32 + 36;
|
||||||
name_prop[4] = median(prop_name[19], prop_name[20], prop_name[21]) as u32 + 36;
|
// name_prop[4] = median(prop_name[19], prop_name[20], prop_name[21]) as u32 + 36;
|
||||||
name_prop[5] = median(prop_name[22], prop_name[23], prop_name[24]) as u32 + 36;
|
// name_prop[5] = median(prop_name[22], prop_name[23], prop_name[24]) as u32 + 36;
|
||||||
name_prop[6] = median(prop_name[25], prop_name[26], prop_name[27]) as u32 + 36;
|
// name_prop[6] = median(prop_name[25], prop_name[26], prop_name[27]) as u32 + 36;
|
||||||
name_prop[7] = median(prop_name[28], prop_name[29], prop_name[30]) as u32 + 36;
|
// name_prop[7] = median(prop_name[28], prop_name[29], prop_name[30]) as u32 + 36;
|
||||||
|
// 疯狂的 unsafe 优化(确信
|
||||||
|
unsafe {
|
||||||
|
let mut prop_name = [0_u8; 32];
|
||||||
|
prop_name.copy_from_slice(name_base.get_unchecked(0..32));
|
||||||
|
prop_name.get_unchecked_mut(0..10).sort_unstable();
|
||||||
|
*name_prop.get_unchecked_mut(0) = 154
|
||||||
|
+ *prop_name.get_unchecked(3) as u32
|
||||||
|
+ *prop_name.get_unchecked(4) as u32
|
||||||
|
+ *prop_name.get_unchecked(5) as u32
|
||||||
|
+ *prop_name.get_unchecked(6) as u32
|
||||||
|
}
|
||||||
|
|
||||||
Self {
|
Self {
|
||||||
name: name.to_string(),
|
name: name.to_string(),
|
||||||
|
Loading…
Reference in New Issue
Block a user