| @@ -1,16 +1,15 @@ | |||||
| mod idgen; | mod idgen; | ||||
| use chrono::Utc; | |||||
| use idgen::*; | use idgen::*; | ||||
| use std::thread; | use std::thread; | ||||
| use chrono::Utc; | |||||
| use std::time::Duration; | use std::time::Duration; | ||||
| fn main() { | fn main() { | ||||
| println!("Hello, world! Rust"); | println!("Hello, world! Rust"); | ||||
| // 总执行次数 | // 总执行次数 | ||||
| let times = 50000; | |||||
| let times = 500000; | |||||
| // 是否启用多线程测试 | // 是否启用多线程测试 | ||||
| let multiThread = false; | let multiThread = false; | ||||
| @@ -18,7 +17,7 @@ fn main() { | |||||
| // 全局设置一次运行参数 | // 全局设置一次运行参数 | ||||
| let mut options = IdGeneratorOptions::New(1); | let mut options = IdGeneratorOptions::New(1); | ||||
| options.WorkerIdBitLength = 6; | options.WorkerIdBitLength = 6; | ||||
| options.SeqBitLength = 6; | |||||
| options.SeqBitLength = 10; | |||||
| //... 可以继续设置其它 options 参数 | //... 可以继续设置其它 options 参数 | ||||
| YitIdHelper::SetIdGenerator(options); | YitIdHelper::SetIdGenerator(options); | ||||
| @@ -32,24 +31,29 @@ fn main() { | |||||
| while i < times { | while i < times { | ||||
| i += 1; | i += 1; | ||||
| if multiThread { // 这是多线程 | |||||
| thread::spawn(move || { | |||||
| id = YitIdHelper::NextId(); | |||||
| println!("{}, id: {}", i, id); | |||||
| }); | |||||
| } else { // 这是单线程 | |||||
| id = YitIdHelper::NextId(); | |||||
| } | |||||
| } | |||||
| YitIdHelper::NextId(); | |||||
| println!("最后生成的id: {}", id); | |||||
| if !multiThread { | |||||
| // 多线程情况下,时间统计不准确 | |||||
| let end = Utc::now().timestamp_millis(); | |||||
| println!("单线程用时 {} ms", end - start); | |||||
| // if multiThread { // 这是多线程 | |||||
| // thread::spawn(move || { | |||||
| // id = YitIdHelper::NextId(); | |||||
| // println!("{}, id: {}", i, id); | |||||
| // }); | |||||
| // } else { // 这是单线程 | |||||
| // id = YitIdHelper::NextId(); | |||||
| // } | |||||
| } | } | ||||
| thread::sleep(std::time::Duration::from_millis(2000)); | |||||
| let end = Utc::now().timestamp_millis(); | |||||
| println!("单线程用时 {} ms", end - start); | |||||
| // println!("最后生成的id: {}", id); | |||||
| // if !multiThread { | |||||
| // // 多线程情况下,时间统计不准确 | |||||
| // let end = Utc::now().timestamp_millis(); | |||||
| // println!("单线程用时 {} ms", end - start); | |||||
| // } | |||||
| thread::sleep(std::time::Duration::from_millis(1000)); | |||||
| } | } | ||||
| } | } | ||||
| @@ -71,6 +75,4 @@ fn set_redis() { | |||||
| // }, | // }, | ||||
| // Err(error) => println!("Unable to create Redis client: {}", error) | // Err(error) => println!("Unable to create Redis client: {}", error) | ||||
| // } | // } | ||||
| } | |||||
| } | |||||