From 0107fe886b014e49613173a0cec3bdc7a3c8208d Mon Sep 17 00:00:00 2001 From: Paul Masurel Date: Sat, 31 Mar 2018 15:40:16 +0900 Subject: [PATCH] Removed timer --- Cargo.toml | 11 +++-- src/common/mod.rs | 6 +-- src/common/timer.rs | 99 -------------------------------------------- src/core/searcher.rs | 3 +- src/lib.rs | 4 +- src/query/query.rs | 22 +++------- 6 files changed, 14 insertions(+), 131 deletions(-) delete mode 100644 src/common/timer.rs diff --git a/Cargo.toml b/Cargo.toml index 724604681..a73703209 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -17,7 +17,7 @@ lazy_static = "0.2.1" tinysegmenter = "0.1.0" regex = "0.2" fst = {version="0.2", default-features=false} -atomicwrites = "0.1.3" +atomicwrites = {version="0.1", optional=true} tempfile = "2.1" log = "0.3.6" combine = "2.2" @@ -29,7 +29,6 @@ num_cpus = "1.2" itertools = "0.5.9" lz4 = "1.20" bit-set = "0.4.0" -time = "0.1" uuid = { version = "0.6", features = ["v4", "serde"] } chan = "0.1" crossbeam = "0.3" @@ -41,7 +40,7 @@ stable_deref_trait = "1.0.0" rust-stemmers = "0.1.0" downcast = { version="0.9", features = ["nightly"]} matches = "0.1" -bitpacking = "0.1" +bitpacking = {path="../bitpacking", default-features=false} [target.'cfg(windows)'.dependencies] winapi = "0.2" @@ -59,9 +58,9 @@ debug-assertions = false [features] default = ["mmap", "simdcompression"] -simdcompression = [] +simdcompression = ["bitpacking/sse3"] streamdict = [] -mmap = ["fst/mmap"] +mmap = ["fst/mmap", "atomicwrites"] [badges] @@ -69,4 +68,4 @@ travis-ci = { repository = "tantivy-search/tantivy" } [[example]] name = "simple_search" -required-features = ["mmap"] \ No newline at end of file +required-features = ["mmap"] diff --git a/src/common/mod.rs b/src/common/mod.rs index 66e4bbfde..fb5042200 100644 --- a/src/common/mod.rs +++ b/src/common/mod.rs @@ -1,5 +1,4 @@ -mod serialize; -mod timer; + mod serialize; mod vint; mod counting_writer; mod composite_file; @@ -8,9 +7,6 @@ mod bitset; pub(crate) use self::composite_file::{CompositeFile, CompositeWrite}; pub use self::serialize::{BinarySerializable, FixedSize}; -pub use self::timer::Timing; -pub use self::timer::TimerTree; -pub use self::timer::OpenTimer; pub use self::vint::VInt; pub use self::counting_writer::CountingWriter; pub use self::bitset::BitSet; diff --git a/src/common/timer.rs b/src/common/timer.rs deleted file mode 100644 index 95638102d..000000000 --- a/src/common/timer.rs +++ /dev/null @@ -1,99 +0,0 @@ -use time::PreciseTime; - -pub struct OpenTimer<'a> { - name: &'static str, - timer_tree: &'a mut TimerTree, - start: PreciseTime, - depth: u32, -} - -impl<'a> OpenTimer<'a> { - /// Starts timing a new named subtask - /// - /// The timer is stopped automatically - /// when the `OpenTimer` is dropped. - pub fn open(&mut self, name: &'static str) -> OpenTimer { - OpenTimer { - name, - timer_tree: self.timer_tree, - start: PreciseTime::now(), - depth: self.depth + 1, - } - } -} - -impl<'a> Drop for OpenTimer<'a> { - fn drop(&mut self) { - self.timer_tree.timings.push(Timing { - name: self.name, - duration: self.start - .to(PreciseTime::now()) - .num_microseconds() - .unwrap(), - depth: self.depth, - }); - } -} - -/// Timing recording -#[derive(Debug, Serialize)] -pub struct Timing { - name: &'static str, - duration: i64, - depth: u32, -} - -/// Timer tree -#[derive(Debug, Serialize)] -pub struct TimerTree { - timings: Vec, -} - -impl TimerTree { - /// Returns the total time elapsed in microseconds - pub fn total_time(&self) -> i64 { - self.timings.last().unwrap().duration - } - - /// Open a new named subtask - pub fn open(&mut self, name: &'static str) -> OpenTimer { - OpenTimer { - name, - timer_tree: self, - start: PreciseTime::now(), - depth: 0, - } - } -} - -impl Default for TimerTree { - fn default() -> TimerTree { - TimerTree { - timings: Vec::new(), - } - } -} - -#[cfg(test)] -mod tests { - - use super::*; - - #[test] - fn test_timer() { - let mut timer_tree = TimerTree::default(); - { - let mut a = timer_tree.open("a"); - { - let mut ab = a.open("b"); - { - let _abc = ab.open("c"); - } - { - let _abd = ab.open("d"); - } - } - } - assert_eq!(timer_tree.timings.len(), 4); - } -} diff --git a/src/core/searcher.rs b/src/core/searcher.rs index a0096ffad..c0001cbf4 100644 --- a/src/core/searcher.rs +++ b/src/core/searcher.rs @@ -2,7 +2,6 @@ use Result; use core::SegmentReader; use schema::Document; use collector::Collector; -use common::TimerTree; use query::Query; use DocAddress; use schema::{Field, Term}; @@ -59,7 +58,7 @@ impl Searcher { } /// Runs a query on the segment readers wrapped by the searcher - pub fn search(&self, query: &Query, collector: &mut C) -> Result { + pub fn search(&self, query: &Query, collector: &mut C) -> Result<()> { query.search(self, collector) } diff --git a/src/lib.rs b/src/lib.rs index 32bb51d5e..b47bb9d32 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -129,6 +129,7 @@ extern crate log; #[macro_use] extern crate error_chain; +#[cfg(feature="mmap")] extern crate atomicwrites; extern crate bit_set; extern crate byteorder; @@ -149,7 +150,6 @@ extern crate serde_json; extern crate stable_deref_trait; extern crate tempdir; extern crate tempfile; -extern crate time; extern crate uuid; extern crate bitpacking; @@ -212,8 +212,6 @@ pub use core::{Index, Searcher, Segment, SegmentId, SegmentMeta}; pub use indexer::IndexWriter; pub use schema::{Document, Term}; pub use core::{InvertedIndexReader, SegmentReader}; -pub use self::common::TimerTree; - pub use postings::Postings; pub use core::SegmentComponent; diff --git a/src/query/query.rs b/src/query/query.rs index fff292702..8143553f4 100644 --- a/src/query/query.rs +++ b/src/query/query.rs @@ -1,7 +1,6 @@ use Result; use collector::Collector; use core::searcher::Searcher; -use common::TimerTree; use SegmentLocalId; use super::Weight; use std::fmt; @@ -67,23 +66,14 @@ pub trait Query: fmt::Debug { /// - creates a `Scorer` object associated for this segment /// - iterate throw the matched documents and push them to the collector. /// - fn search(&self, searcher: &Searcher, collector: &mut Collector) -> Result { - let mut timer_tree = TimerTree::default(); + fn search(&self, searcher: &Searcher, collector: &mut Collector) -> Result<()> { let scoring_enabled = collector.requires_scoring(); let weight = self.weight(searcher, scoring_enabled)?; - { - let mut search_timer = timer_tree.open("search"); - for (segment_ord, segment_reader) in searcher.segment_readers().iter().enumerate() { - let mut segment_search_timer = search_timer.open("segment_search"); - { - let _ = segment_search_timer.open("set_segment"); - collector.set_segment(segment_ord as SegmentLocalId, segment_reader)?; - } - let _collection_timer = segment_search_timer.open("collection"); - let mut scorer = weight.scorer(segment_reader)?; - scorer.collect(collector, segment_reader.delete_bitset()); - } + for (segment_ord, segment_reader) in searcher.segment_readers().iter().enumerate() { + collector.set_segment(segment_ord as SegmentLocalId, segment_reader)?; + let mut scorer = weight.scorer(segment_reader)?; + scorer.collect(collector, segment_reader.delete_bitset()); } - Ok(timer_tree) + Ok(()) } }