mirror of
https://github.com/sharkdp/fd.git
synced 2024-11-16 00:48:28 +01:00
Merge pull request #1410 from tmccombs/available-parallelism
Replace num_cpus with `std:🧵:available_parallelism`
This commit is contained in:
commit
c96b1af3be
4 changed files with 17 additions and 32 deletions
17
Cargo.lock
generated
17
Cargo.lock
generated
|
@ -312,7 +312,6 @@ dependencies = [
|
|||
"nix 0.26.4",
|
||||
"normpath",
|
||||
"nu-ansi-term",
|
||||
"num_cpus",
|
||||
"regex",
|
||||
"regex-syntax 0.7.5",
|
||||
"tempfile",
|
||||
|
@ -357,12 +356,6 @@ version = "0.4.1"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8"
|
||||
|
||||
[[package]]
|
||||
name = "hermit-abi"
|
||||
version = "0.3.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d77f7ec81a6d05a3abb01ab6eb7590f6083d08449fe5a1c8b1e620283546ccb7"
|
||||
|
||||
[[package]]
|
||||
name = "home"
|
||||
version = "0.5.5"
|
||||
|
@ -546,16 +539,6 @@ dependencies = [
|
|||
"autocfg",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "num_cpus"
|
||||
version = "1.16.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43"
|
||||
dependencies = [
|
||||
"hermit-abi",
|
||||
"libc",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "once_cell"
|
||||
version = "1.18.0"
|
||||
|
|
|
@ -38,7 +38,6 @@ aho-corasick = "1.0"
|
|||
nu-ansi-term = "0.49"
|
||||
argmax = "0.3.1"
|
||||
ignore = "0.4.20"
|
||||
num_cpus = "1.16"
|
||||
regex = "1.9.6"
|
||||
regex-syntax = "0.7"
|
||||
ctrlc = "3.2"
|
||||
|
|
29
src/cli.rs
29
src/cli.rs
|
@ -1,3 +1,4 @@
|
|||
use std::num::NonZeroUsize;
|
||||
use std::path::{Path, PathBuf};
|
||||
use std::time::Duration;
|
||||
|
||||
|
@ -497,8 +498,8 @@ pub struct Opts {
|
|||
|
||||
/// Set number of threads to use for searching & executing (default: number
|
||||
/// of available CPU cores)
|
||||
#[arg(long, short = 'j', value_name = "num", hide_short_help = true, value_parser = clap::value_parser!(u32).range(1..))]
|
||||
pub threads: Option<u32>,
|
||||
#[arg(long, short = 'j', value_name = "num", hide_short_help = true, value_parser = str::parse::<NonZeroUsize>)]
|
||||
pub threads: Option<NonZeroUsize>,
|
||||
|
||||
/// Milliseconds to buffer before streaming search results to console
|
||||
///
|
||||
|
@ -687,17 +688,8 @@ impl Opts {
|
|||
self.min_depth.or(self.exact_depth)
|
||||
}
|
||||
|
||||
pub fn threads(&self) -> usize {
|
||||
// This will panic if the number of threads passed in is more than usize::MAX in an environment
|
||||
// where usize is less than 32 bits (for example 16-bit architectures). It's pretty
|
||||
// unlikely fd will be running in such an environment, and even more unlikely someone would
|
||||
// be trying to use that many threads on such an environment, so I think panicing is an
|
||||
// appropriate way to handle that.
|
||||
std::cmp::max(
|
||||
self.threads
|
||||
.map_or_else(num_cpus::get, |n| n.try_into().expect("too many threads")),
|
||||
1,
|
||||
)
|
||||
pub fn threads(&self) -> NonZeroUsize {
|
||||
self.threads.unwrap_or_else(default_num_threads)
|
||||
}
|
||||
|
||||
pub fn max_results(&self) -> Option<usize> {
|
||||
|
@ -719,6 +711,17 @@ impl Opts {
|
|||
}
|
||||
}
|
||||
|
||||
/// Get the default number of threads to use, if not explicitly specified.
|
||||
fn default_num_threads() -> NonZeroUsize {
|
||||
// If we can't get the amount of parallelism for some reason, then
|
||||
// default to a single thread, because that is safe.
|
||||
// Note that the minimum value for a NonZeroUsize is 1.
|
||||
// Unfortunately, we can't do `NonZeroUsize::new(1).unwrap()`
|
||||
// in a const context.
|
||||
const FALLBACK_PARALLELISM: NonZeroUsize = NonZeroUsize::MIN;
|
||||
std::thread::available_parallelism().unwrap_or(FALLBACK_PARALLELISM)
|
||||
}
|
||||
|
||||
#[derive(Copy, Clone, PartialEq, Eq, ValueEnum)]
|
||||
pub enum FileType {
|
||||
#[value(alias = "f")]
|
||||
|
|
|
@ -252,7 +252,7 @@ fn construct_config(mut opts: Opts, pattern_regexps: &[String]) -> Result<Config
|
|||
max_depth: opts.max_depth(),
|
||||
min_depth: opts.min_depth(),
|
||||
prune: opts.prune,
|
||||
threads: opts.threads(),
|
||||
threads: opts.threads().get(),
|
||||
max_buffer_time: opts.max_buffer_time,
|
||||
ls_colors,
|
||||
interactive_terminal,
|
||||
|
|
Loading…
Reference in a new issue