过于夸张的提升了(
This commit is contained in:
parent
087b318e8d
commit
529c6abcb3
2
Cargo.lock
generated
2
Cargo.lock
generated
@ -1831,7 +1831,7 @@ checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b"
|
||||
|
||||
[[package]]
|
||||
name = "tswn"
|
||||
version = "0.1.2"
|
||||
version = "0.1.3"
|
||||
dependencies = [
|
||||
"base16384",
|
||||
"chrono",
|
||||
|
@ -2,6 +2,8 @@
|
||||
|
||||
## 0.1.1
|
||||
|
||||
> 445E/d
|
||||
|
||||
```text
|
||||
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
|
||||
@ -23,6 +25,8 @@
|
||||
|
||||
## 0.1.2
|
||||
|
||||
> 478E/d
|
||||
|
||||
```text
|
||||
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
|
||||
@ -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: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]
|
||||
name = "tswn"
|
||||
description = "tool shenjack work shop namerena"
|
||||
version = "0.1.2"
|
||||
version = "0.1.3"
|
||||
edition = "2021"
|
||||
|
||||
# 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;
|
||||
for _ in 0..2 {
|
||||
let mut s = 0_u8;
|
||||
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[k - 1] });
|
||||
s = s.wrapping_add(if k == 0 {
|
||||
0
|
||||
} else {
|
||||
*unsafe { name_bytes.get_unchecked(k - 1) }
|
||||
});
|
||||
s = s.wrapping_add(val[i]);
|
||||
unsafe { val.swap_unchecked(i, s as usize) }
|
||||
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 {
|
||||
// *unsafe { name_bytes.get_unchecked(k - 1) }
|
||||
// });
|
||||
// s = s.wrapping_add(val[i]);
|
||||
// unsafe { val.swap_unchecked(i, s as usize) }
|
||||
// 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 优化
|
||||
@ -163,17 +176,14 @@ impl Namer {
|
||||
|
||||
for i in (0..256).step_by(64) {
|
||||
// 一次性加载64个数字
|
||||
// let mut x = u8x64::from_slice(&simd_val[i..]);
|
||||
let mut x = u8x64::from_slice(unsafe { simd_val.get_unchecked(i..) });
|
||||
x = x * simd_181 + simd_160;
|
||||
// 写入到 simd_val
|
||||
// x.copy_to_slice(&mut simd_val[i..]);
|
||||
unsafe {
|
||||
x.copy_to_slice(simd_val.get_unchecked_mut(i..));
|
||||
}
|
||||
|
||||
let y = x & simd_63;
|
||||
// y.copy_to_slice(&mut simd_val_b[i..]);
|
||||
unsafe {
|
||||
y.copy_to_slice(simd_val_b.get_unchecked_mut(i..));
|
||||
}
|
||||
@ -182,14 +192,6 @@ impl Namer {
|
||||
let mut mod_count = 0;
|
||||
|
||||
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 {
|
||||
if simd_val.get_unchecked(i) > &88 && simd_val.get_unchecked(i) < &217 {
|
||||
*name_base.get_unchecked_mut(mod_count as usize) =
|
||||
@ -203,13 +205,12 @@ impl Namer {
|
||||
}
|
||||
if mod_count < 31 {
|
||||
for i in 96..256 {
|
||||
if simd_val[i] > 88 && simd_val[i] < 217 {
|
||||
// name_base[mod_count as usize] = simd_val_b[i];
|
||||
unsafe {
|
||||
unsafe {
|
||||
if simd_val.get_unchecked(i) > &88 && simd_val.get_unchecked(i) < &217 {
|
||||
*name_base.get_unchecked_mut(mod_count as usize) =
|
||||
*simd_val_b.get_unchecked(i);
|
||||
mod_count += 1;
|
||||
}
|
||||
mod_count += 1;
|
||||
}
|
||||
if mod_count > 30 {
|
||||
break;
|
||||
@ -231,20 +232,31 @@ impl Namer {
|
||||
}
|
||||
|
||||
// 计算 name_prop
|
||||
let mut prop_name = name_base[0..32].to_vec();
|
||||
prop_name[0..10].sort_unstable();
|
||||
name_prop[0] = 154
|
||||
+ prop_name[3] as u32
|
||||
+ prop_name[4] as u32
|
||||
+ prop_name[5] 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[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[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[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;
|
||||
// let mut prop_name = name_base[0..32].to_vec();
|
||||
// prop_name[0..10].sort_unstable();
|
||||
// name_prop[0] = 154
|
||||
// + prop_name[3] as u32
|
||||
// + prop_name[4] as u32
|
||||
// + prop_name[5] 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[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[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[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;
|
||||
// 疯狂的 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 {
|
||||
name: name.to_string(),
|
||||
|
Loading…
Reference in New Issue
Block a user