From 77fdb0a754f334c00306c6af6f654c581df748b5 Mon Sep 17 00:00:00 2001 From: rabite Date: Wed, 12 Feb 2020 18:49:55 +0100 Subject: reduce latency by not running in unnecessary thread pool reduce latency by not running in unnecessary thread pool --- src/files.rs | 27 +++++++++++---------------- src/listview.rs | 30 ++++++++++++------------------ 2 files changed, 23 insertions(+), 34 deletions(-) diff --git a/src/files.rs b/src/files.rs index c02e2a8..4326714 100644 --- a/src/files.rs +++ b/src/files.rs @@ -393,26 +393,21 @@ impl Files { } pub fn enqueue_jobs(&mut self, n: usize) { - let pool = get_pool(); let from = self.meta_upto.unwrap_or(0); self.meta_upto = Some(from + n); - let mut jobs = - pool.install(|| { - let c = match self.cache.clone() { - Some(cache) => cache, - None => return vec![] - }; + let cache = match self.cache.clone() { + Some(cache) => cache, + None => return + }; - self.iter_files_mut() - .skip(from) - .take(n) - // To turn into IndexedParallelIter - .collect::>() - .into_par_iter() - .filter_map(|f| f.prepare_meta_job(&c)) - .collect::>() - }); + let mut jobs = self.iter_files_mut() + .collect::>() + .into_par_iter() + .skip(from) + .take(n) + .filter_map(|f| f.prepare_meta_job(&cache)) + .collect::>(); self.jobs.append(&mut jobs); } diff --git a/src/listview.rs b/src/listview.rs index 13f5ba6..e2bbed9 100644 --- a/src/listview.rs +++ b/src/listview.rs @@ -300,9 +300,6 @@ impl FileListBuilder { } pub fn build(mut self) -> HResult> { - // Create new IO pool to not block the main render pool, or other busy IO pools - let pool = crate::files::get_pool(); - let c = &self.cache; let s = self.stale.clone(); let core = self.core; @@ -316,8 +313,8 @@ impl FileListBuilder { _ => false }; - let files = pool.install(|| -> HResult { - let mut files = match source { + let mut files = + match source { FileSource::Files(f) => Ok(f), FileSource::Path(f) => { c.as_ref() @@ -327,25 +324,22 @@ impl FileListBuilder { } }?; - // Check/set hidden flag and recalculate number of files if it's different - if !files.show_hidden == cfg.show_hidden() { - files.show_hidden = cfg.show_hidden(); - files.recalculate_len(); - } - - // TODO: Fix sorting so it works with lazy/partial sorting - if !nosort { - files.sort(); - } + // Check/set hidden flag and recalculate number of files if it's different + if !files.show_hidden == cfg.show_hidden() { + files.show_hidden = cfg.show_hidden(); + files.recalculate_len(); + } - Ok(files) - })?; + // TODO: Fix sorting so it works with lazy/partial sorting + if !nosort { + files.sort(); + } let mut view = ListView::new(&core, files); selected_file .or_else(|| c.as_ref() - .and_then(|c| c.get_selection(&view.content.directory).ok())) + .and_then(|c| c.get_selection(&view.content.directory).ok())) .map(|f| view.select_file(&f)); self.stale.map(|s| view.content.stale = Some(s)); -- cgit v1.2.3