let _ = &client.query("CREATE TABLE IF NOT EXISTS public.test_01 ($1 $2, CONSTRAINT test_01_pkey PRIMARY KEY ($3))", &[&name_column[0], &column_datatype[0], &name_column[0]]).await?;
let _ = &client.query("CREATE TABLE IF NOT EXISTS public.test_01 ($1::TEXT smallserial, CONSTRAINT test_01_pkey PRIMARY KEY (id_test_01))", &[&"id_test_01"]).await?;
let x: &str = &("DROP TABLE IF EXISTS".to_string() + " " + &name_schema_tb);
let _ = &client.query(x, &[]).await?;
loop {
if j == RING {break};
let start = Instant::now();
//
loop {
if i == len_01 {break};
if vec_01[i] % 2 == 0 {
vec_chet.push(vec_01[i]);
count_chet = count_chet + 1;
}else{
vec_nech.push(vec_01[i]);
count_nech = count_nech + 1;
}
i = i + 1;
}
//
i = 0;
//
j = j + 1;
let duration = start.elapsed();
// println!("{:?}. время выполнения цикла = {:?} наносек. = {:?}", j, duration, duration.subsec_nanos() as u64);
//
if (duration.subsec_nanos() as u64) > t01 {
t01 = duration.subsec_nanos() as u64;
}
if (duration.subsec_nanos() as u64) < t02 {
t02 = duration.subsec_nanos() as u64;
}
//
}
println!("{:?}. время выполнения цикла = {:?} наносек. = {:?}", j, duration, duration.subsec_nanos() as u64);
1. Бенчмаркать нужно на одном и том же наборе данных.В примере кода делаю 300 повторений над одним и тем же набором данных.
fn main() {
let s: &str = "x";
println!("1. {:?}", s); // "x"
println!("1. {:p}\n", &s); // 0x7ffd82dd8b70
// вариант 2.1 не даёт пересоздать:
// let s: &str = (s.to_string() + "y" + "z").as_str();
//
// вариант 2.2 даёт пересоздать:
let s: &str = &(s.to_string() + "y" + "z");
//
println!("2. {:?}", s); // "xyz"
println!("2. {:p}", &s); // 0x7ffd82dd8c28
}
В примерах 2.1 и 2.2 ты дропаешь этот String
важна скорость чего?
// блок A
let mut u02: Vec<String> = vec![];
for c in u01_str.chars() {
u02.push(c.to_string());
}
println!("3. u02 = {:?}", &u02); // [";", "\r", "\n", " ", "/", "*"]
// блок B
let mut u03: Vec<&str> = vec![];
for c in u01_str.chars() {
u03.push(c.to_string().as_str());
}
println!("4. u03 = {:?}", &u03); // чтобы получить: [";", "\r", "\n", " ", "/", "*"]