Refactor code and update command line options
This commit is contained in:
parent
5612e6bf73
commit
3fc6f01ba1
19
readme.md
19
readme.md
@ -13,15 +13,20 @@ Options:
|
||||
-t, --thread-count <THREAD_COUNT> 线程数 [default: 10]
|
||||
-p, --prop-expected <PROP_EXPECT> 八围预期值 [default: 740]
|
||||
--team <TEAM> 队伍名称
|
||||
--report-interval <REPORT_INTERVAL> 预期状态输出时间间隔 (秒) [default: 10]
|
||||
-r, --report-interval <REPORT_INTERVAL> 预期状态输出时间间隔 (秒) [default: 10]
|
||||
-h, --help Print help
|
||||
```
|
||||
|
||||
```text
|
||||
2024-03-01T18:05:23.839032Z INFO namerena_rs: | 1|Id: 753431199|595224.82/s 514.274E/d 10.00 ⬆️ 预计:4304342210:30:47|
|
||||
2024-03-01T18:05:23.840289Z INFO namerena_rs: | 2|Id: 753355740|595089.89/s 514.158E/d 10.00 ⬆️ 预计:4305318679:54:45|
|
||||
2024-03-01T18:05:33.662249Z INFO namerena_rs: | 2|Id: 765257520|605880.29/s 523.481E/d 9.82 ⬆️ 预计:4228638984:28:1|
|
||||
2024-03-01T18:05:33.663742Z INFO namerena_rs: | 1|Id: 765335679|605851.08/s 523.455E/d 9.82 ⬆️ 预计:4228841394:50:46|
|
||||
2024-03-01T18:05:43.562524Z INFO namerena_rs: | 1|Id: 777452699|612050.45/s 528.812E/d 9.90 ⬆️ 预计:4186010600:17:22|
|
||||
2024-03-01T18:05:43.570757Z INFO namerena_rs: | 2|Id: 777375120|611481.35/s 528.320E/d 9.91 ⬆️ 预计:4189905799:2:50|
|
||||
2024-03-01T18:37:10.173136Z INFO namerena_rs: | 5|Id: 3739645623|469537.07/s 405.680E/d 9.82⬆️|6 |预计:1091308155:41:31|
|
||||
2024-03-01T18:37:10.194772Z INFO namerena_rs: | 2|Id: 3734123020|473225.72/s 408.867E/d 9.74⬆️|4 |预计:1082803227:51:0|
|
||||
2024-03-01T18:37:10.231521Z INFO namerena_rs: | 8|Id: 3729376726|469175.03/s 405.367E/d 9.72⬆️|6 |预计:1092150173:10:30|
|
||||
2024-03-01T18:37:10.251452Z INFO namerena_rs: | 9|Id: 3732033027|472235.53/s 408.012E/d 9.75⬆️|9 |预计:1085073231:32:47|
|
||||
2024-03-01T18:37:10.340098Z INFO namerena_rs: | 3|Id: 3725914021|468009.19/s 404.360E/d 9.70⬆️|4 |预计:1094871161:39:53|
|
||||
2024-03-01T18:37:20.400566Z INFO namerena_rs: | 1|Id: 3795115419|451859.64/s 390.407E/d 10.40⬇️|6 |预计:1134003212:16:47|
|
||||
2024-03-01T18:37:20.486611Z INFO namerena_rs: |10|Id: 3793752828|449366.88/s 388.253E/d 10.46⬇️|5 |预计:1140294453:44:10|
|
||||
2024-03-01T18:37:20.496393Z INFO namerena_rs: | 6|Id: 3798215724|452784.92/s 391.206E/d 10.53⬇️|7 |预计:1131686538:10:2|
|
||||
2024-03-01T18:37:20.541673Z INFO namerena_rs: | 7|Id: 3796865625|450432.78/s 389.174E/d 10.44⬇️|8 |预计:1137595813:34:8|
|
||||
2024-03-01T18:37:20.587515Z INFO namerena_rs: | 5|Id: 3786599323|450863.35/s 389.546E/d 10.41⬇️|6 |预计:1136508335:7:17|
|
||||
2024-03-01T18:37:20.606505Z INFO namerena_rs: | 4|Id: 3791895222|448066.32/s 387.129E/d 10.57⬇️|7 |预计:1143602856:29:37|
|
||||
```
|
||||
|
11
src/main.rs
11
src/main.rs
@ -18,16 +18,13 @@ use tracing::{info, warn};
|
||||
/// 不可以空格开头
|
||||
#[inline(always)]
|
||||
pub fn gen_name(id: u64) -> String {
|
||||
// u64 -> [u8]
|
||||
let id_bytes = id.to_be_bytes();
|
||||
Base16384Utf8::encode(id_bytes.as_slice())
|
||||
}
|
||||
|
||||
pub fn show_name(namer: &name::Namer) -> String {
|
||||
// var attributeNames = ["HP", "攻", "防", "速", "敏", "魔", "抗", "智"]
|
||||
format!(
|
||||
"HP|{} 攻|{} 防|{} 速|{} 敏|{} 魔|{} 抗|{} 智|{} 八围:{}",
|
||||
namer.name_prop[7],
|
||||
namer.name_prop[0],
|
||||
namer.name_prop[1],
|
||||
namer.name_prop[2],
|
||||
@ -35,6 +32,7 @@ pub fn show_name(namer: &name::Namer) -> String {
|
||||
namer.name_prop[4],
|
||||
namer.name_prop[5],
|
||||
namer.name_prop[6],
|
||||
namer.name_prop[7],
|
||||
namer.get_property()
|
||||
)
|
||||
}
|
||||
@ -60,7 +58,7 @@ pub struct Command {
|
||||
#[arg(long)]
|
||||
pub team: String,
|
||||
/// 预期状态输出时间间隔 (秒)
|
||||
#[arg(long, default_value_t = 10)]
|
||||
#[arg(long, short = 'r', default_value_t = 10)]
|
||||
pub report_interval: u64,
|
||||
}
|
||||
|
||||
@ -75,6 +73,7 @@ fn cacl(config: Command, id: u64, outfile: &PathBuf) {
|
||||
let mut run_speed = GUESS_SPEED as f64;
|
||||
let mut start_time = std::time::Instant::now();
|
||||
let mut k: u64 = 0;
|
||||
let mut get_count: u32 = 0;
|
||||
// 提前准备好 team_namer
|
||||
let team_namer = name::TeamNamer::new_unchecked(&config.team);
|
||||
|
||||
@ -84,6 +83,7 @@ fn cacl(config: Command, id: u64, outfile: &PathBuf) {
|
||||
let prop = namer.get_property();
|
||||
|
||||
if (prop + allow_d as f32) > config.prop_expect as f32 {
|
||||
get_count += 1;
|
||||
let name = gen_name(i as u64);
|
||||
let full_name = format!("{}@{}", name, config.team);
|
||||
info!("Id:{:>15}|{}|{}", i, full_name, show_name(&namer));
|
||||
@ -111,7 +111,7 @@ fn cacl(config: Command, id: u64, outfile: &PathBuf) {
|
||||
// 根据实际运行速率来调整 report_interval
|
||||
report_interval = config.report_interval * new_run_speed as u64;
|
||||
info!(
|
||||
"|{:>2}|Id:{:>15}|{:6.2}/s {:>3.3}E/d {:>5.2} {} 预计:{}:{}:{}|",
|
||||
"|{:>2}|Id:{:>15}|{:6.2}/s {:>3.3}E/d {:>5.2}{}|{:<3}|预计:{}:{}:{}|",
|
||||
id,
|
||||
i,
|
||||
new_run_speed,
|
||||
@ -127,6 +127,7 @@ fn cacl(config: Command, id: u64, outfile: &PathBuf) {
|
||||
} else {
|
||||
"➡️".blue()
|
||||
},
|
||||
get_count,
|
||||
wait_time.num_hours(),
|
||||
wait_time.num_minutes() % 60,
|
||||
wait_time.num_seconds() % 60
|
||||
|
42
src/name.rs
42
src/name.rs
@ -133,18 +133,8 @@ impl Namer {
|
||||
let skl_freq = [0_u8; 40];
|
||||
|
||||
let name_bytes = name.as_bytes();
|
||||
// let mut name_bytes = name.as_bytes().to_vec();
|
||||
// name_bytes.insert(0, 0);
|
||||
let name_len = name_bytes.len();
|
||||
let b_name_len = name_len + 1;
|
||||
// 转到 256 长度 的 u8 数组
|
||||
// let name_bytes = {
|
||||
// let mut bytes = [0_u8; 256];
|
||||
// for i in 0..name_len {
|
||||
// bytes[i + 1] = name_bytes[i];
|
||||
// }
|
||||
// bytes
|
||||
// };
|
||||
// // 计算
|
||||
// for i in 0..256 {
|
||||
// s += team_bytes[i % (team_len + 1)] as u32 + val[i] as u32;
|
||||
@ -211,7 +201,7 @@ impl Namer {
|
||||
}
|
||||
|
||||
let mut mod_count = 0;
|
||||
for i in 0..256 {
|
||||
for i in 0..96 {
|
||||
let k = simd_val[i];
|
||||
if k >= 89 && k < 217 {
|
||||
name_base[mod_count as usize] = (k & 63) as u8;
|
||||
@ -222,13 +212,6 @@ impl Namer {
|
||||
}
|
||||
}
|
||||
if mod_count < 31 {
|
||||
// println!("mod_count: {}", mod_count);
|
||||
// for i in (96..256).step_by(64) {
|
||||
// // 一次性加载4个数字
|
||||
// let mut x = u8x64::from_slice(&simd_val[i..]);
|
||||
// x = x * x_a + x_b;
|
||||
// x.copy_to_slice(&mut simd_val[i..]);
|
||||
// }
|
||||
for i in 96..256 {
|
||||
let k = simd_val[i];
|
||||
if k >= 89 && k < 217 {
|
||||
@ -266,14 +249,14 @@ impl Namer {
|
||||
st[5] = median(prop_name[22], prop_name[23], prop_name[24]) + 36;
|
||||
st[6] = median(prop_name[25], prop_name[26], prop_name[27]) + 36;
|
||||
st[7] = median(prop_name[28], prop_name[29], prop_name[30]) + 36; */
|
||||
name_prop[7] = 154 + prop_name[3] as u32 + prop_name[4] as u32 + prop_name[5] as u32 + prop_name[6] as u32;
|
||||
name_prop[0] = median(prop_name[10], prop_name[11], prop_name[12]) as u32 + 36;
|
||||
name_prop[1] = median(prop_name[13], prop_name[14], prop_name[15]) as u32 + 36;
|
||||
name_prop[2] = median(prop_name[16], prop_name[17], prop_name[18]) as u32 + 36;
|
||||
name_prop[3] = median(prop_name[19], prop_name[20], prop_name[21]) as u32 + 36;
|
||||
name_prop[4] = median(prop_name[22], prop_name[23], prop_name[24]) as u32 + 36;
|
||||
name_prop[5] = median(prop_name[25], prop_name[26], prop_name[27]) as u32 + 36;
|
||||
name_prop[6] = median(prop_name[28], prop_name[29], prop_name[30]) as u32 + 36;
|
||||
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;
|
||||
|
||||
Self {
|
||||
name: name.to_string(),
|
||||
@ -288,9 +271,8 @@ impl Namer {
|
||||
|
||||
#[inline(always)]
|
||||
pub fn get_property(&self) -> f32 {
|
||||
// 除 prop[7] 外 加起来 + prop[7] / 3
|
||||
let sum1 = self.name_prop[0..7].iter().sum::<u32>();
|
||||
let sum2 = self.name_prop[7] as u32;
|
||||
let sum1 = self.name_prop[1..=7].iter().sum::<u32>();
|
||||
let sum2 = self.name_prop[0] as u32;
|
||||
sum1 as f32 + (sum2 as f32 / 3_f32)
|
||||
}
|
||||
}
|
||||
@ -353,7 +335,7 @@ mod test {
|
||||
let team = TeamNamer::new_unchecked("x");
|
||||
let namer = Namer::new_from_team_namer_unchecked(&team, "x");
|
||||
|
||||
let prop_vec: Vec<u32> = vec![57, 53, 66, 72, 70, 71, 61, 344];
|
||||
let prop_vec: Vec<u32> = vec![344, 57, 53, 66, 72, 70, 71, 61];
|
||||
assert_eq!(namer.name_prop.to_vec(), prop_vec);
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user