Commit graph

33 commits

Author SHA1 Message Date
blake2-ppc
7052371e39 extra: Rename deque::Deque to ringbuf::RingBuf and impl trait Deque
Let RingBuf have a logical name for a concrete type, and Deque is
used for the Deque trait (implemented by RingBuf and dlist).
2013-07-11 15:54:35 +02:00
Jens Nockert
1aae28a57d Replaces the free-standing functions in f32, &c.
The free-standing functions in f32, f64, i8, i16, i32, i64, u8, u16,
u32, u64, float, int, and uint are replaced with generic functions in
num instead.

If you were previously using any of those functions, just replace them
with the corresponding function with the same name in num.

Note: If you were using a function that corresponds to an operator, use
the operator instead.
2013-07-08 18:05:17 +02:00
blake2-ppc
10c7698d4b deque: Implement Clone and Eq for Deque 2013-07-06 15:27:32 +02:00
blake2-ppc
07e2775dff deque: Remove obsolete methods .each() and .eachi() 2013-07-06 07:26:05 +02:00
blake2-ppc
0ff5c17cbb deque: Implement Deque::with_capacity. Lower initial capacity to 8.
We need a reasonably small initial capacity to make Deques faster
for the common case.
2013-07-06 07:26:05 +02:00
blake2-ppc
8a3267672c deque: Move the shorter part when growing
The deque is split at the marker lo, or logical index 0. Move the
shortest part (split by lo) when growing. This way add_front is just as
fast as add_back, on average.
2013-07-06 07:26:04 +02:00
blake2-ppc
75015c36f9 deque: Change iterators to use the same index calculation as Deque
The previous implementation of reverse iterators used modulus (%) of
negative indices, which did work but was fragile due to dependency on
the divisor.
2013-07-06 07:26:04 +02:00
blake2-ppc
f88d532734 deque: Add tests for mut_iter and mut_rev_iter 2013-07-06 07:26:04 +02:00
blake2-ppc
5d72f3f296 deque: Remove rendundant field hi
The deque is determined by vec self.elts.len(), self.nelts, and self.lo,
and self.hi is calculated from these.

self.hi is just the raw index of element number `self.nelts`
2013-07-06 07:26:04 +02:00
blake2-ppc
08dc72f5d5 deque: Implement FromIterator
So that deque can be used with IteratorUtil::collect()
2013-07-06 05:42:45 +02:00
blake2-ppc
40ce0b7d76 deque: Speed up deque growth by a lot
Fix some issues with the deque being very slow, keep the same vec around
instead of constructing a new. Move as few elements as possible, so the
self.lo point is not moved after grow.

   [o o o o o|o o o]
       hi...^ ^.... lo

   grows to

   [. . . . .|o o o o o o o o|. . .]
              ^.. lo        ^.. hi

If the deque is append-only, it will result in moving no elements on
grow. If the deque is prepend-only, all will be moved each time.

The bench tests added show big improvements:

Timed using `rust build -O --test extra.rs && ./extra --bench deque`

Old version:

test deque::tests::bench_add_back ... bench: 4976 ns/iter (+/- 9)
test deque::tests::bench_add_front ... bench: 4108 ns/iter (+/- 18)
test deque::tests::bench_grow ... bench: 416964 ns/iter (+/- 4197)
test deque::tests::bench_new ... bench: 408 ns/iter (+/- 12)

With this commit:

test deque::tests::bench_add_back ... bench: 12 ns/iter (+/- 0)
test deque::tests::bench_add_front ... bench: 16 ns/iter (+/- 0)
test deque::tests::bench_grow ... bench: 1515 ns/iter (+/- 30)
test deque::tests::bench_new ... bench: 419 ns/iter (+/- 3)
2013-07-06 05:42:45 +02:00
blake2-ppc
81933edf92 deque: Add tests and bench tests
Add a test that excercises deque growing.

Add bench tests for grow, new, add_back, add_front, to expose how slow
these functions are.
2013-07-06 05:42:45 +02:00
blake2-ppc
5a37cf8a31 deque: Fix grow condition in add_front
Without this, it will hit the assert in fn grow after 32 consecutive
add_front.
2013-07-06 05:42:45 +02:00
Huon Wilson
c437a16c5d rustc: add a lint to enforce uppercase statics. 2013-07-01 17:52:57 +10:00
bors
6fcd8bf567 auto merge of #7468 : cmr/rust/great_renaming, r=pcwalton 2013-06-30 01:19:38 -07:00
Alex Crichton
b29c368674 Removing a lot of usage of '&const' 2013-06-29 08:35:48 -07:00
Corey Richardson
71b1c6ab60 Warning cleanup 2013-06-29 11:20:04 -04:00
Corey Richardson
1662bd371c Great renaming: propagate throughout the rest of the codebase 2013-06-29 11:20:02 -04:00
Huon Wilson
32d655916f Convert vec::{reserve, reserve_at_least, capacity} to methods. 2013-06-28 00:40:47 +10:00
Corey Richardson
ab428b6480 Fix deque tests 2013-06-26 23:42:20 -04:00
Corey Richardson
f8ae9b0ae6 Fix whitespace issues (thanks @jedestep!) 2013-06-26 18:14:35 -04:00
Jed Estep
35314c93fa Moving implementation details to a macro 2013-06-26 18:08:56 -04:00
Jed Estep
096fb795de A few iterator tests 2013-06-26 18:08:56 -04:00
Jed Estep
dfc9392c38 iterators use deque ordering 2013-06-26 18:08:56 -04:00
Jed Estep
4f7a742a06 deque iterator 2013-06-26 18:08:56 -04:00
Niko Matsakis
eb48c29681 Add copies to type params with Copy bound 2013-06-16 12:47:36 -04:00
Daniel Micay
d68be89e69 rm MutableIter
replaced with mutable implementations of Iterator
2013-06-14 23:15:42 -04:00
Patrick Walton
5fb254695b Remove all uses of pub impl. rs=style 2013-06-01 09:18:27 -07:00
Alex Crichton
395685079a libextra: Require documentation by default 2013-05-30 01:03:15 -05:00
Patrick Walton
206ab89629 librustc: Stop reexporting the standard modules from prelude. 2013-05-29 19:04:53 -07:00
Tim Chevalier
77de84b4f6 extra: Add reserve and reserve_at_least to extra::deque
As called for in #4994
2013-05-27 11:47:38 -07:00
Patrick Walton
f3723cf7c4 libextra: Rename the actual metadata names of libcore to libstd and libstd to libextra 2013-05-22 21:57:07 -07:00
Patrick Walton
0c820d4123 libstd: Rename libcore to libstd and libstd to libextra; update makefiles.
This only changes the directory names; it does not change the "real"
metadata names.
2013-05-22 21:57:05 -07:00
Renamed from src/libstd/deque.rs (Browse further)