1
0
Fork 0
mirror of synced 2024-05-17 19:03:08 +12:00
This commit is contained in:
Rafał Mikrut 2024-02-07 09:06:37 +01:00
parent 17448599fa
commit 6adca76b5a
5 changed files with 18 additions and 17 deletions

View file

@ -42,7 +42,7 @@ blake3 = "1.5"
crc32fast = "1.3" crc32fast = "1.3"
xxhash-rust = { version = "0.8", features = ["xxh3"] } xxhash-rust = { version = "0.8", features = ["xxh3"] }
tempfile = "3.9" tempfile = "3.10"
# Video Duplicates # Video Duplicates
vid_dup_finder_lib = "0.1" vid_dup_finder_lib = "0.1"

View file

@ -39,6 +39,7 @@ use crate::duplicate::make_hard_link;
use crate::CZKAWKA_VERSION; use crate::CZKAWKA_VERSION;
static NUMBER_OF_THREADS: state::InitCell<usize> = state::InitCell::new(); static NUMBER_OF_THREADS: state::InitCell<usize> = state::InitCell::new();
static ALL_AVAILABLE_THREADS: state::InitCell<usize> = state::InitCell::new();
pub const DEFAULT_THREAD_SIZE: usize = 8 * 1024 * 1024; // 8 MB pub const DEFAULT_THREAD_SIZE: usize = 8 * 1024 * 1024; // 8 MB
pub const DEFAULT_WORKER_THREAD_SIZE: usize = 4 * 1024 * 1024; // 4 MB pub const DEFAULT_WORKER_THREAD_SIZE: usize = 4 * 1024 * 1024; // 4 MB
@ -47,7 +48,7 @@ pub fn get_number_of_threads() -> usize {
if *data >= 1 { if *data >= 1 {
*data *data
} else { } else {
get_default_number_of_threads() get_all_available_threads()
} }
} }
@ -66,15 +67,19 @@ pub fn setup_logger(disabled_printing: bool) {
handsome_logger::TermLogger::init(config, TerminalMode::Mixed, ColorChoice::Always).unwrap(); handsome_logger::TermLogger::init(config, TerminalMode::Mixed, ColorChoice::Always).unwrap();
} }
pub fn get_available_threads() -> usize { pub fn get_all_available_threads() -> usize {
thread::available_parallelism().map(std::num::NonZeroUsize::get).unwrap_or(1) *ALL_AVAILABLE_THREADS.get_or_init(|| {
let available_threads = thread::available_parallelism().map(std::num::NonZeroUsize::get).unwrap_or(1);
ALL_AVAILABLE_THREADS.set(available_threads);
available_threads
})
} }
pub fn print_version_mode() { pub fn print_version_mode() {
let rust_version = env!("RUST_VERSION_INTERNAL"); let rust_version = env!("RUST_VERSION_INTERNAL");
let debug_release = if cfg!(debug_assertions) { "debug" } else { "release" }; let debug_release = if cfg!(debug_assertions) { "debug" } else { "release" };
let processors = get_available_threads(); let processors = get_all_available_threads();
let info = os_info::get(); let info = os_info::get();
info!( info!(
@ -94,11 +99,7 @@ pub fn print_version_mode() {
} }
pub fn set_default_number_of_threads() { pub fn set_default_number_of_threads() {
set_number_of_threads(get_default_number_of_threads()); set_number_of_threads(get_all_available_threads());
}
pub fn get_default_number_of_threads() -> usize {
thread::available_parallelism().map(std::num::NonZeroUsize::get).unwrap_or(1)
} }
pub fn set_number_of_threads(thread_number: usize) { pub fn set_number_of_threads(thread_number: usize) {

View file

@ -9,7 +9,7 @@ use directories_next::ProjectDirs;
use gtk4::prelude::*; use gtk4::prelude::*;
use gtk4::{ComboBoxText, ScrolledWindow, TextView, TreeView}; use gtk4::{ComboBoxText, ScrolledWindow, TextView, TreeView};
use czkawka_core::common::get_default_number_of_threads; use czkawka_core::common::get_all_available_threads;
use czkawka_core::common_dir_traversal::CheckingMethod; use czkawka_core::common_dir_traversal::CheckingMethod;
use czkawka_core::common_items::DEFAULT_EXCLUDED_ITEMS; use czkawka_core::common_items::DEFAULT_EXCLUDED_ITEMS;
use czkawka_core::similar_images::SIMILAR_VALUES; use czkawka_core::similar_images::SIMILAR_VALUES;
@ -833,8 +833,8 @@ pub fn load_configuration(
main_notebook.scale_similarity_similar_images.connect_change_value(scale_step_function); main_notebook.scale_similarity_similar_images.connect_change_value(scale_step_function);
main_notebook.scale_similarity_similar_images.set_value(similar_images_similarity as f64); main_notebook.scale_similarity_similar_images.set_value(similar_images_similarity as f64);
settings.scale_settings_number_of_threads.set_range(0_f64, get_default_number_of_threads() as f64); settings.scale_settings_number_of_threads.set_range(0_f64, get_all_available_threads() as f64);
settings.scale_settings_number_of_threads.set_fill_level(get_default_number_of_threads() as f64); settings.scale_settings_number_of_threads.set_fill_level(get_all_available_threads() as f64);
settings.scale_settings_number_of_threads.connect_change_value(scale_step_function); settings.scale_settings_number_of_threads.connect_change_value(scale_step_function);
settings.scale_settings_number_of_threads.set_value(thread_number as f64); settings.scale_settings_number_of_threads.set_value(thread_number as f64);
} else { } else {

View file

@ -1,6 +1,6 @@
use slint::{ComponentHandle, SharedString, VecModel}; use slint::{ComponentHandle, SharedString, VecModel};
use czkawka_core::common::get_available_threads; use czkawka_core::common::get_all_available_threads;
use crate::settings::{ALLOWED_HASH_SIZE_VALUES, ALLOWED_HASH_TYPE_VALUES, ALLOWED_RESIZE_ALGORITHM_VALUES}; use crate::settings::{ALLOWED_HASH_SIZE_VALUES, ALLOWED_HASH_TYPE_VALUES, ALLOWED_RESIZE_ALGORITHM_VALUES};
use crate::{GuiState, MainWindow, Settings}; use crate::{GuiState, MainWindow, Settings};
@ -8,7 +8,7 @@ use crate::{GuiState, MainWindow, Settings};
// Some info needs to be send to gui at the start like available thread number in OS. // Some info needs to be send to gui at the start like available thread number in OS.
// //
pub fn set_initial_gui_infos(app: &MainWindow) { pub fn set_initial_gui_infos(app: &MainWindow) {
let threads = get_available_threads(); let threads = get_all_available_threads();
let settings = app.global::<Settings>(); let settings = app.global::<Settings>();
app.global::<GuiState>().set_maximum_threads(threads as f32); app.global::<GuiState>().set_maximum_threads(threads as f32);

View file

@ -9,7 +9,7 @@ use log::{debug, error, info, warn};
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};
use slint::{ComponentHandle, Model, ModelRc}; use slint::{ComponentHandle, Model, ModelRc};
use czkawka_core::common::{get_available_threads, set_number_of_threads}; use czkawka_core::common::{get_all_available_threads, set_number_of_threads};
use czkawka_core::common_items::{DEFAULT_EXCLUDED_DIRECTORIES, DEFAULT_EXCLUDED_ITEMS}; use czkawka_core::common_items::{DEFAULT_EXCLUDED_DIRECTORIES, DEFAULT_EXCLUDED_ITEMS};
use crate::common::{create_excluded_directories_model_from_pathbuf, create_included_directories_model_from_pathbuf, create_vec_model_from_vec_string}; use crate::common::{create_excluded_directories_model_from_pathbuf, create_included_directories_model_from_pathbuf, create_vec_model_from_vec_string};
@ -240,7 +240,7 @@ pub fn load_settings_from_file(app: &MainWindow) {
} }
} }
base_settings.default_preset = max(min(base_settings.default_preset, 9), 0); base_settings.default_preset = max(min(base_settings.default_preset, 9), 0);
custom_settings.thread_number = max(min(custom_settings.thread_number, get_available_threads() as i32), 0); custom_settings.thread_number = max(min(custom_settings.thread_number, get_all_available_threads() as i32), 0);
// Ended validating // Ended validating
set_settings_to_gui(app, &custom_settings); set_settings_to_gui(app, &custom_settings);