From 772d49043d654e938a1e607976e768ee5ba23520 Mon Sep 17 00:00:00 2001 From: jacekpoz Date: Thu, 9 May 2024 02:53:08 +0200 Subject: [PATCH] add initial zad3 --- lab3/zad3/.gitignore | 2 + lab3/zad3/Cargo.lock | 293 ++++++++++++++++++++++++++++++++++++ lab3/zad3/Cargo.toml | 10 ++ lab3/zad3/gnuplot/comp.gp | 14 ++ lab3/zad3/gnuplot/comp_n.gp | 14 ++ lab3/zad3/gnuplot/swap.gp | 14 ++ lab3/zad3/gnuplot/swap_n.gp | 14 ++ lab3/zad3/gnuplot/time.gp | 14 ++ lab3/zad3/gnuplot/time_n.gp | 14 ++ lab3/zad3/plots/comp.pdf | Bin 0 -> 16637 bytes lab3/zad3/plots/comp_n.pdf | Bin 0 -> 16511 bytes lab3/zad3/plots/swap.pdf | Bin 0 -> 16365 bytes lab3/zad3/plots/swap_n.pdf | Bin 0 -> 16270 bytes lab3/zad3/plots/time.pdf | Bin 0 -> 20822 bytes lab3/zad3/plots/time_n.pdf | Bin 0 -> 22816 bytes lab3/zad3/src/main.rs | 164 ++++++++++++++++++++ 16 files changed, 553 insertions(+) create mode 100644 lab3/zad3/.gitignore create mode 100644 lab3/zad3/Cargo.lock create mode 100644 lab3/zad3/Cargo.toml create mode 100644 lab3/zad3/gnuplot/comp.gp create mode 100644 lab3/zad3/gnuplot/comp_n.gp create mode 100644 lab3/zad3/gnuplot/swap.gp create mode 100644 lab3/zad3/gnuplot/swap_n.gp create mode 100644 lab3/zad3/gnuplot/time.gp create mode 100644 lab3/zad3/gnuplot/time_n.gp create mode 100644 lab3/zad3/plots/comp.pdf create mode 100644 lab3/zad3/plots/comp_n.pdf create mode 100644 lab3/zad3/plots/swap.pdf create mode 100644 lab3/zad3/plots/swap_n.pdf create mode 100644 lab3/zad3/plots/time.pdf create mode 100644 lab3/zad3/plots/time_n.pdf create mode 100644 lab3/zad3/src/main.rs diff --git a/lab3/zad3/.gitignore b/lab3/zad3/.gitignore new file mode 100644 index 0000000..a9bbb74 --- /dev/null +++ b/lab3/zad3/.gitignore @@ -0,0 +1,2 @@ +target/ +results/ diff --git a/lab3/zad3/Cargo.lock b/lab3/zad3/Cargo.lock new file mode 100644 index 0000000..286e2c5 --- /dev/null +++ b/lab3/zad3/Cargo.lock @@ -0,0 +1,293 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "autocfg" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" + +[[package]] +name = "bitflags" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf4b9d6a944f767f8e5e0db018570623c85f3d925ac718db4e06d0187adb21c1" + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "crossbeam-deque" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d" +dependencies = [ + "crossbeam-epoch", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-epoch" +version = "0.9.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "248e3bacc7dc6baa3b21e405ee045c3047101a49145e7e9eca583ab4c2ca5345" + +[[package]] +name = "dashmap" +version = "5.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "978747c1d849a7d2ee5e8adc0159961c48fb7e5db2f06af6723b80123bb53856" +dependencies = [ + "cfg-if", + "hashbrown", + "lock_api", + "once_cell", + "parking_lot_core", +] + +[[package]] +name = "either" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a47c1c47d2f5964e29c61246e81db715514cd532db6b5116a25ea3c03d6780a2" + +[[package]] +name = "getrandom" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94b22e06ecb0110981051723910cbf0b5f5e09a2062dd7663334ee79a9d1286c" +dependencies = [ + "cfg-if", + "libc", + "wasi", +] + +[[package]] +name = "hashbrown" +version = "0.14.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" + +[[package]] +name = "libc" +version = "0.2.153" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd" + +[[package]] +name = "libgen" +version = "0.1.0" +dependencies = [ + "rand", +] + +[[package]] +name = "libselect" +version = "0.1.0" +dependencies = [ + "libsort", + "rand", +] + +[[package]] +name = "libsort" +version = "0.1.0" + +[[package]] +name = "lock_api" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" +dependencies = [ + "autocfg", + "scopeguard", +] + +[[package]] +name = "once_cell" +version = "1.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" + +[[package]] +name = "parking_lot_core" +version = "0.9.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall", + "smallvec", + "windows-targets", +] + +[[package]] +name = "ppv-lite86" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha", + "rand_core", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom", +] + +[[package]] +name = "rayon" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa" +dependencies = [ + "either", + "rayon-core", +] + +[[package]] +name = "rayon-core" +version = "1.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2" +dependencies = [ + "crossbeam-deque", + "crossbeam-utils", +] + +[[package]] +name = "redox_syscall" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "469052894dcb553421e483e4209ee581a45100d31b4018de03e5a7ad86374a7e" +dependencies = [ + "bitflags", +] + +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "smallvec" +version = "1.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" + +[[package]] +name = "wasi" +version = "0.11.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" + +[[package]] +name = "windows-targets" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f0713a46559409d202e70e28227288446bf7841d3211583a4b53e3f6d96e7eb" +dependencies = [ + "windows_aarch64_gnullvm", + "windows_aarch64_msvc", + "windows_i686_gnu", + "windows_i686_gnullvm", + "windows_i686_msvc", + "windows_x86_64_gnu", + "windows_x86_64_gnullvm", + "windows_x86_64_msvc", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7088eed71e8b8dda258ecc8bac5fb1153c5cffaf2578fc8ff5d61e23578d3263" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9985fd1504e250c615ca5f281c3f7a6da76213ebd5ccc9561496568a2752afb6" + +[[package]] +name = "windows_i686_gnu" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88ba073cf16d5372720ec942a8ccbf61626074c6d4dd2e745299726ce8b89670" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87f4261229030a858f36b459e748ae97545d6f1ec60e5e0d6a3d32e0dc232ee9" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db3c2bf3d13d5b658be73463284eaf12830ac9a26a90c717b7f771dfe97487bf" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e4246f76bdeff09eb48875a0fd3e2af6aada79d409d33011886d3e1581517d9" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "852298e482cd67c356ddd9570386e2862b5673c85bd5f88df9ab6802b334c596" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bec47e5bfd1bff0eeaf6d8b485cc1074891a197ab4225d504cb7a1ab88b02bf0" + +[[package]] +name = "zad2" +version = "0.1.0" +dependencies = [ + "dashmap", + "libgen", + "libselect", + "rayon", +] diff --git a/lab3/zad3/Cargo.toml b/lab3/zad3/Cargo.toml new file mode 100644 index 0000000..4971c79 --- /dev/null +++ b/lab3/zad3/Cargo.toml @@ -0,0 +1,10 @@ +[package] +name = "zad2" +version = "0.1.0" +edition = "2021" + +[dependencies] +libgen = { path = "../../libgen" } +libselect = { path = "../../libselect" } +rayon = "1.10.0" +dashmap = "5.5.3" diff --git a/lab3/zad3/gnuplot/comp.gp b/lab3/zad3/gnuplot/comp.gp new file mode 100644 index 0000000..105e89b --- /dev/null +++ b/lab3/zad3/gnuplot/comp.gp @@ -0,0 +1,14 @@ +set title "Average comparisons, n ∈ {100, 200, ..., 50000}" +set style data lines + +set xlabel "n" +set ylabel "Average comparisons" +set term pdfcairo font "JetBrainsMono-NF,12" + +plot "./results/result" \ +using 1:2 t "Select 3", \ +"" using 1:5 t "Select 5", \ +"" using 1:8 t "Select 7", \ +"" using 1:11 t "Select 9" + +# vim: ft=gnuplot diff --git a/lab3/zad3/gnuplot/comp_n.gp b/lab3/zad3/gnuplot/comp_n.gp new file mode 100644 index 0000000..9031226 --- /dev/null +++ b/lab3/zad3/gnuplot/comp_n.gp @@ -0,0 +1,14 @@ +set title "Average comparisons / n, n ∈ {100, 200, ..., 50000}" +set style data lines + +set xlabel "n" +set ylabel "Average comparisons / n" +set term pdfcairo font "JetBrainsMono-NF,12" + +plot "./results/result" \ +using 1:14 t "Select 3", \ +"" using 1:17 t "Select 5", \ +"" using 1:20 t "Select 7", \ +"" using 1:23 t "Select 9" + +# vim: ft=gnuplot diff --git a/lab3/zad3/gnuplot/swap.gp b/lab3/zad3/gnuplot/swap.gp new file mode 100644 index 0000000..41491e4 --- /dev/null +++ b/lab3/zad3/gnuplot/swap.gp @@ -0,0 +1,14 @@ +set title "Average swaps, n ∈ {100, 200, ..., 50000}" +set style data lines + +set xlabel "n" +set ylabel "Average swaps" +set term pdfcairo font "JetBrainsMono-NF,12" + +plot "./results/result" \ +using 1:3 t "Select 3", \ +"" using 1:6 t "Select 5", \ +"" using 1:9 t "Select 7", \ +"" using 1:12 t "Select 9" + +# vim: ft=gnuplot diff --git a/lab3/zad3/gnuplot/swap_n.gp b/lab3/zad3/gnuplot/swap_n.gp new file mode 100644 index 0000000..2931d1c --- /dev/null +++ b/lab3/zad3/gnuplot/swap_n.gp @@ -0,0 +1,14 @@ +set title "Average swaps / n, n ∈ {100, 200, ..., 50000}" +set style data lines + +set xlabel "n" +set ylabel "Average swaps / n" +set term pdfcairo font "JetBrainsMono-NF,12" + +plot "./results/result" \ +using 1:15 t "Select 3", \ +"" using 1:18 t "Select 5", \ +"" using 1:21 t "Select 7", \ +"" using 1:24 t "Select 9" + +# vim: ft=gnuplot diff --git a/lab3/zad3/gnuplot/time.gp b/lab3/zad3/gnuplot/time.gp new file mode 100644 index 0000000..85e9d30 --- /dev/null +++ b/lab3/zad3/gnuplot/time.gp @@ -0,0 +1,14 @@ +set title "Average time, n ∈ {100, 200, ..., 50000}" +set style data lines + +set xlabel "n" +set ylabel "Average time" +set term pdfcairo font "JetBrainsMono-NF,12" + +plot "./results/result" \ +using 1:4 t "Select 3", \ +"" using 1:7 t "Select 5", \ +"" using 1:10 t "Select 7", \ +"" using 1:13 t "Select 9" + +# vim: ft=gnuplot diff --git a/lab3/zad3/gnuplot/time_n.gp b/lab3/zad3/gnuplot/time_n.gp new file mode 100644 index 0000000..beb3c49 --- /dev/null +++ b/lab3/zad3/gnuplot/time_n.gp @@ -0,0 +1,14 @@ +set title "Average time / n, n ∈ {100, 200, ..., 50000}" +set style data lines + +set xlabel "n" +set ylabel "Average time / n" +set term pdfcairo font "JetBrainsMono-NF,12" + +plot "./results/result" \ +using 1:16 t "Select 3", \ +"" using 1:19 t "Select 5", \ +"" using 1:22 t "Select 7", \ +"" using 1:25 t "Select 9" + +# vim: ft=gnuplot diff --git a/lab3/zad3/plots/comp.pdf b/lab3/zad3/plots/comp.pdf new file mode 100644 index 0000000000000000000000000000000000000000..2330ac3246a8a51eb387b0296203b3e4efcd018d GIT binary patch literal 16637 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 SwhXL{OlB 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 literal 0 HcmV?d00001 diff --git a/lab3/zad3/plots/swap_n.pdf b/lab3/zad3/plots/swap_n.pdf new file mode 100644 index 0000000000000000000000000000000000000000..926a1db3606c6a4720bd81d6e7691be530a907a0 GIT binary patch literal 16270 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%0DyModx1=ZSyim1b_66PZ@paM(vU6@| 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 literal 0 HcmV?d00001 diff --git a/lab3/zad3/src/main.rs b/lab3/zad3/src/main.rs new file mode 100644 index 0000000..a5d90b8 --- /dev/null +++ b/lab3/zad3/src/main.rs @@ -0,0 +1,164 @@ +use std::{fs::{self, OpenOptions}, io::{self, Write}, sync::Arc, time::SystemTime}; + +use dashmap::DashMap; +use libgen::gen_rand; +use libselect::normal_select::NormalSelect; +use libselect::Select; +use rayon::{current_thread_index, iter::{IntoParallelIterator, ParallelIterator}}; + +fn comp_avg(results_map: &DashMap>) -> DashMap { + results_map.iter() + .map(|ref_multi| { + let (i, results) = ref_multi.pair(); + (*i, (results.iter() + .map(|res| res.0) + .sum::() as f64 / results.len() as f64)) + } + ) + .collect() +} + +fn swap_avg(results_map: &DashMap>) -> DashMap { + results_map.iter() + .map(|ref_multi| { + let (i, results) = ref_multi.pair(); + (*i, (results.iter() + .map(|res| res.1) + .sum::() as f64 / results.len() as f64)) + } + ) + .collect() +} + +fn time_avg(results_map: &DashMap>) -> DashMap { + results_map.iter() + .map(|ref_multi| { + let (i, results) = ref_multi.pair(); + (*i, (results.iter() + .map(|res| res.2) + .sum::() as f64 / results.len() as f64)) + } + ) + .collect() +} + +fn main() -> io::Result<()> { + + let m = 50; + + let select_3_results: Arc>> = Arc::new(DashMap::new()); + let select_5_results: Arc>> = Arc::new(DashMap::new()); + let select_7_results: Arc>> = Arc::new(DashMap::new()); + let select_9_results: Arc>> = Arc::new(DashMap::new()); + + let select_3_results_clone = Arc::clone(&select_3_results); + let select_5_results_clone = Arc::clone(&select_5_results); + let select_7_results_clone = Arc::clone(&select_7_results); + let select_9_results_clone = Arc::clone(&select_9_results); + + (100u64..=50000u64).step_by(100).collect::>().into_par_iter().for_each(move |n| { + if select_3_results_clone.get(&n).is_some() { + return; + } + if select_5_results_clone.get(&n).is_some() { + return; + } + if select_7_results_clone.get(&n).is_some() { + return; + } + if select_9_results_clone.get(&n).is_some() { + return; + } + println!("{}: starting n: {n}", current_thread_index().unwrap()); + let input = gen_rand(n); + + select_3_results_clone.insert(n, vec![]); + select_5_results_clone.insert(n, vec![]); + select_7_results_clone.insert(n, vec![]); + select_9_results_clone.insert(n, vec![]); + + let mut select_3 = NormalSelect::new(false); + let mut select_5 = NormalSelect::new(false); + let mut select_7 = NormalSelect::new(false); + let mut select_9 = NormalSelect::new(false); + + let k = n as usize / 2; + for _ in 0..m { + _ = std::io::stdout().flush(); + let time_3 = SystemTime::now(); + select_3.select_k(&input, k, 3); + let time_3 = time_3.elapsed().unwrap().as_millis(); + let time_5 = SystemTime::now(); + select_5.select_k(&input, k, 5); + let time_5 = time_5.elapsed().unwrap().as_millis(); + let time_7 = SystemTime::now(); + select_7.select_k(&input, k, 7); + let time_7 = time_7.elapsed().unwrap().as_millis(); + let time_9 = SystemTime::now(); + select_9.select_k(&input, k, 9); + let time_9 = time_9.elapsed().unwrap().as_millis(); + + select_3_results_clone.get_mut(&n).unwrap().push((select_3.num_comp(), select_3.num_swap(), time_3)); + select_5_results_clone.get_mut(&n).unwrap().push((select_5.num_comp(), select_5.num_swap(), time_5)); + select_7_results_clone.get_mut(&n).unwrap().push((select_7.num_comp(), select_7.num_swap(), time_7)); + select_9_results_clone.get_mut(&n).unwrap().push((select_9.num_comp(), select_9.num_swap(), time_9)); + } + println!("{}: finished n: {n}", current_thread_index().unwrap()); + }); + + let select_3_comp_averages = comp_avg(&select_3_results); + let select_3_swap_averages = swap_avg(&select_3_results); + let select_3_time_averages = time_avg(&select_3_results); + + let select_5_comp_averages = comp_avg(&select_5_results); + let select_5_swap_averages = swap_avg(&select_5_results); + let select_5_time_averages = time_avg(&select_5_results); + + let select_7_comp_averages = comp_avg(&select_7_results); + let select_7_swap_averages = swap_avg(&select_7_results); + let select_7_time_averages = time_avg(&select_7_results); + + let select_9_comp_averages = comp_avg(&select_9_results); + let select_9_swap_averages = swap_avg(&select_9_results); + let select_9_time_averages = time_avg(&select_9_results); + + + _ = fs::create_dir_all("./results"); + + let mut results_file = OpenOptions::new() + .create(true) + .write(true) + .truncate(true) + .open(format!("./results/result"))?; + + for n in (100..=50000).step_by(100) { + writeln!(results_file, "{n} {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} {}", + select_3_comp_averages.get(&n).unwrap().value(), + select_3_swap_averages.get(&n).unwrap().value(), + select_3_time_averages.get(&n).unwrap().value(), + select_5_comp_averages.get(&n).unwrap().value(), + select_5_swap_averages.get(&n).unwrap().value(), + select_5_time_averages.get(&n).unwrap().value(), + select_7_comp_averages.get(&n).unwrap().value(), + select_7_swap_averages.get(&n).unwrap().value(), + select_7_time_averages.get(&n).unwrap().value(), + select_9_comp_averages.get(&n).unwrap().value(), + select_9_swap_averages.get(&n).unwrap().value(), + select_9_time_averages.get(&n).unwrap().value(), + select_3_comp_averages.get(&n).unwrap().value() / n as f64, + select_3_swap_averages.get(&n).unwrap().value() / n as f64, + select_3_time_averages.get(&n).unwrap().value() / n as f64, + select_5_comp_averages.get(&n).unwrap().value() / n as f64, + select_5_swap_averages.get(&n).unwrap().value() / n as f64, + select_5_time_averages.get(&n).unwrap().value() / n as f64, + select_7_comp_averages.get(&n).unwrap().value() / n as f64, + select_7_swap_averages.get(&n).unwrap().value() / n as f64, + select_7_time_averages.get(&n).unwrap().value() / n as f64, + select_9_comp_averages.get(&n).unwrap().value() / n as f64, + select_9_swap_averages.get(&n).unwrap().value() / n as f64, + select_9_time_averages.get(&n).unwrap().value() / n as f64, + )?; + } + + Ok(()) +}