File tree Expand file tree Collapse file tree 4 files changed +57
-7
lines changed Expand file tree Collapse file tree 4 files changed +57
-7
lines changed Original file line number Diff line number Diff line change
1
+ Changelog
2
+ =========
3
+
4
+ v1.0.0 - November 18, 2018
5
+ --------------------------
6
+
7
+ * Support for ordered mapping. Use ` ordered_map() ` if you need the order of
8
+ your outputs to match the order of their inputs. This adds a performance
9
+ penalty for the extra bookkeeping required. And you may see additional
10
+ performance loss due to head-of-line blocking, depending on your workload(s).
11
+ * Switched implementation to use crossbeam_channel, which greatly
12
+ [ improves performance] [ 1 ] .
13
+ * Shrank the API. ` map() ` and ` ordered_map() ` return ` impl Iterator ` , so we
14
+ no longer leak the internal ` PipelineIter ` type(s).
15
+
16
+ [ 1 ] : https://github.com/NfNitLoop/pipeliner/commit/c8b23a04242d6eac91df424022f62a3074c31eb0
17
+
18
+
19
+ v0.1.1 - December 5, 2016
20
+ -------------------------
21
+
22
+ Initial release.
23
+
24
+ * Used std::sync::mpsc
Original file line number Diff line number Diff line change 1
1
[package ]
2
2
name = " pipeliner"
3
- version = " 0.1.1 "
3
+ version = " 1.0.0 "
4
4
authors = [" Cody Casterline <cody.casterline@gmail.com>" ]
5
5
license = " Apache-2.0"
6
6
Original file line number Diff line number Diff line change 1
1
Pipeliner
2
2
=========
3
3
4
- Pipeliner is a Rust library which aims to simplify doing multi-threaded work
5
- pipelines on iterators.
4
+ Pipeliner is a Rust library to help you create multithreaded work pipelines. You
5
+ can choose how many threads each step of the pipeline uses to tune performance
6
+ for I/O- or CPU-bound workloads.
6
7
7
- Take a look at the code examples in the docs here:
8
- https://docs.rs/pipeliner/
8
+ The [ API docs] contain code examples.
9
+
10
+ Links
11
+ -----
12
+
13
+ * [ API docs]
14
+ * [ Changelog]
15
+ * [ Pipeliner] crate on crates.io
16
+
17
+ [ API Docs ] : https://docs.rs/pipeliner/
18
+ [ Changelog ] : ./CHANGELOG.md
19
+ [ Pipeliner ] : https://crates.io/crates/pipeliner
20
+
21
+ Comparison with Rayon
22
+ ---------------------
23
+
24
+ [ Rayon] is another Rust library for parallel computation. If you're doing purely
25
+ CPU-bound work, you may want to try that out to see if it offers better
26
+ performance.
27
+
28
+ Pipeliner, IMHO, offers a simpler interface. That simpler interface makes it
29
+ easier to combine parts of a data pipeline that may be I/O-bound and CPU-bound.
30
+ Usually in those cases, your bottleneck is I/O, not the speed of your parallel
31
+ execution library, so having a nice API may be preferable.
32
+
33
+ [ Rayon ] : https://crates.io/crates/rayon
Original file line number Diff line number Diff line change 9
9
//! * `panic`s in your worker threads are propagated out of the output
10
10
//! Iterator. (No silent loss of data.)
11
11
//! * No `unsafe` code.
12
- //!
13
- //! Since `IntoIterator`s implement [Pipeline], you can, for example:
14
12
//!
15
13
//! ```
14
+ //! // Import the Pipeline trait to give all Iterators and IntoIterators the
15
+ //! // .with_threads() method:
16
16
//! use pipeliner::Pipeline;
17
+ //!
17
18
//! for result in (0..100).with_threads(10).map(|x| x + 1) {
18
19
//! println!("result: {}", result);
19
20
//! }
You can’t perform that action at this time.
0 commit comments