summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndrew Gallant <jamslam@gmail.com>2016-09-14 07:40:46 -0400
committerAndrew Gallant <jamslam@gmail.com>2016-09-14 07:40:46 -0400
commitc24f8fd50f39437799069ce9ad29d9df9ba8ca97 (patch)
tree16b142f0a1229ddd24d6e5e24c04903848e32d97
parent73272cf8a691175e61136e2cfe0c116b99b5ded3 (diff)
Replace crossbeam with deque.
deque appears faster.
-rw-r--r--Cargo.lock20
-rw-r--r--Cargo.toml2
-rw-r--r--src/main.rs16
3 files changed, 25 insertions, 13 deletions
diff --git a/Cargo.lock b/Cargo.lock
index 6b2d79d3..dc9cac03 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -2,7 +2,7 @@
name = "ripgrep"
version = "0.1.1"
dependencies = [
- "crossbeam 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
+ "deque 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
"docopt 0.6.83 (registry+https://github.com/rust-lang/crates.io-index)",
"env_logger 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
"glob 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -30,9 +30,12 @@ dependencies = [
]
[[package]]
-name = "crossbeam"
-version = "0.2.10"
+name = "deque"
+version = "0.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "rand 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)",
+]
[[package]]
name = "docopt"
@@ -132,6 +135,14 @@ dependencies = [
]
[[package]]
+name = "rand"
+version = "0.3.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "libc 0.2.16 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
name = "regex"
version = "0.1.77"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -216,7 +227,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
[metadata]
"checksum aho-corasick 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)" = "ca972c2ea5f742bfce5687b9aef75506a764f61d37f8f649047846a9686ddb66"
-"checksum crossbeam 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)" = "0c5ea215664ca264da8a9d9c3be80d2eaf30923c259d03e870388eb927508f97"
+"checksum deque 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "1614659040e711785ed8ea24219140654da1729f3ec8a47a9719d041112fe7bf"
"checksum docopt 0.6.83 (registry+https://github.com/rust-lang/crates.io-index)" = "fc42c6077823a361410c37d47c2535b73a190cbe10838dc4f400fe87c10c8c3b"
"checksum env_logger 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "15abd780e45b3ea4f76b4e9a26ff4843258dd8a3eed2775a0e7368c2e7936c2f"
"checksum fs2 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)" = "bcd414e5a1a979b931bb92f41b7a54106d3f6d2e6c253e9ce943b7cd468251ef"
@@ -228,6 +239,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
"checksum memchr 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)" = "d8b629fb514376c675b98c1421e80b151d3817ac42d7c667717d282761418d20"
"checksum memmap 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "f20f72ed93291a72e22e8b16bb18762183bb4943f0f483da5b8be1a9e8192752"
"checksum num_cpus 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a859041cbf7a70ea1ece4b87d1a2c6ef364dcb68749c88db1f97304b9ec09d5f"
+"checksum rand 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)" = "2791d88c6defac799c3f20d74f094ca33b9332612d9aef9078519c82e4fe04a5"
"checksum regex 0.1.77 (registry+https://github.com/rust-lang/crates.io-index)" = "64b03446c466d35b42f2a8b203c8e03ed8b91c0f17b56e1f84f7210a257aa665"
"checksum regex-syntax 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "279401017ae31cf4e15344aa3f085d0e2e5c1e70067289ef906906fdbe92c8fd"
"checksum rustc-serialize 0.3.19 (registry+https://github.com/rust-lang/crates.io-index)" = "6159e4e6e559c81bd706afe9c8fd68f547d3e851ce12e76b1de7914bab61691b"
diff --git a/Cargo.toml b/Cargo.toml
index e39c78b4..28d941c0 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -23,7 +23,7 @@ name = "integration"
path = "tests/tests.rs"
[dependencies]
-crossbeam = "0.2"
+deque = "0.3"
docopt = "0.6"
env_logger = "0.3"
grep = { version = "0.1", path = "grep" }
diff --git a/src/main.rs b/src/main.rs
index fb04188a..aa51ec79 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -1,4 +1,4 @@
-extern crate crossbeam;
+extern crate deque;
extern crate docopt;
extern crate env_logger;
extern crate grep;
@@ -28,7 +28,7 @@ use std::result;
use std::sync::{Arc, Mutex};
use std::thread;
-use crossbeam::sync::chase_lev::{self, Steal, Stealer};
+use deque::{Stealer, Stolen};
use grep::Grep;
use memmap::{Mmap, Protection};
use term::Terminal;
@@ -97,8 +97,8 @@ fn run(args: Args) -> Result<u64> {
let out = Arc::new(Mutex::new(args.out()));
let mut workers = vec![];
- let mut workq = {
- let (workq, stealer) = chase_lev::deque();
+ let workq = {
+ let (workq, stealer) = deque::new();
for _ in 0..args.threads() {
let worker = MultiWorker {
chan_work: stealer.clone(),
@@ -215,10 +215,10 @@ impl MultiWorker {
fn run(mut self) -> u64 {
loop {
let work = match self.chan_work.steal() {
- Steal::Empty | Steal::Abort => continue,
- Steal::Data(Work::Quit) => break,
- Steal::Data(Work::Stdin) => WorkReady::Stdin,
- Steal::Data(Work::File(ent)) => {
+ Stolen::Empty | Stolen::Abort => continue,
+ Stolen::Data(Work::Quit) => break,
+ Stolen::Data(Work::Stdin) => WorkReady::Stdin,
+ Stolen::Data(Work::File(ent)) => {
match File::open(ent.path()) {
Ok(file) => WorkReady::DirFile(ent, file),
Err(err) => {