Fix calculation start point in cacl function

This commit is contained in:
shenjack 2024-02-29 01:13:59 +08:00
parent 9269acf241
commit 46e1bf18a8
Signed by: shenjack
GPG Key ID: 7B1134A979775551
2 changed files with 12 additions and 4 deletions

View File

@ -54,11 +54,11 @@ pub struct Command {
pub team: String, pub team: String,
} }
fn cacl(max: u64, step: usize, top: u32, id: u64, team: &String) { fn cacl(start: u64, max: u64, step: usize, top: u32, id: u64, team: &String) {
let mut start_time = std::time::Instant::now(); let mut start_time = std::time::Instant::now();
let mut k: u64 = 0; let mut k: u64 = 0;
let mut top = top; let mut top = top;
for i in (0+id..max).step_by(step) { for i in (start+id..max).step_by(step) {
let name = gen_name(i as u64); let name = gen_name(i as u64);
// let full_name = format!("{}@shenjack", name); // let full_name = format!("{}@shenjack", name);
// let namer = name::Namer::new(&full_name); // let namer = name::Namer::new(&full_name);
@ -99,13 +99,14 @@ fn main() {
for i in 0..cli_arg.thread_count { for i in 0..cli_arg.thread_count {
let top = cli_arg.top; let top = cli_arg.top;
let max = cli_arg.end; let max = cli_arg.end;
let start = cli_arg.start;
n += 1; n += 1;
let thread_name = format!("thread_{}", i); let thread_name = format!("thread_{}", i);
let thread_count = cli_arg.thread_count; let thread_count = cli_arg.thread_count;
let team = cli_arg.team.clone(); let team = cli_arg.team.clone();
threads.push(std::thread::spawn(move || { threads.push(std::thread::spawn(move || {
info!("线程 {} 开始计算", thread_name); info!("线程 {} 开始计算", thread_name);
cacl(max as u64, thread_count as usize, top as u32, n as u64, &team); cacl(start, max as u64, thread_count as usize, top as u32, n as u64, &team);
info!("线程 {} 结束计算", thread_name); info!("线程 {} 结束计算", thread_name);
})); }));
} }

View File

@ -1,5 +1,6 @@
use tracing::warn; use tracing::warn;
#[inline(always)]
pub fn median<T>(x: T, y: T, z: T) -> T pub fn median<T>(x: T, y: T, z: T) -> T
where where
T: std::cmp::Ord + std::marker::Copy, T: std::cmp::Ord + std::marker::Copy,
@ -112,7 +113,13 @@ impl Namer {
let mut r = name_base[0..32].to_vec(); let mut r = name_base[0..32].to_vec();
for i in (10..31).step_by(3) { for i in (10..31).step_by(3) {
r[i..i + 3].sort_unstable(); r[i..i + 3].sort_unstable();
name_prop[prop_cnt] = median(r[i], r[i + 1], r[i + 2]) as u32; let med = median(r[i], r[i + 1], r[i + 2]);
// let max_ = r[i].max(r[i + 1]).max(r[i + 2]);
// let min_ = r[i].min(r[i + 1]).min(r[i + 2]);
// r[i] = min_;
// r[i + 1] = med;
// r[i + 2] = max_;
name_prop[prop_cnt] = med as u32;
prop_cnt += 1; prop_cnt += 1;
} }
r[0..10].sort_unstable(); r[0..10].sort_unstable();