@@ -85,6 +85,7 @@ impl<T> Vec<T> {
85
85
/// # use std::vec::Vec;
86
86
/// let vec: Vec<int> = Vec::with_capacity(10);
87
87
/// ```
88
+ #[ inline]
88
89
pub fn with_capacity ( capacity : uint ) -> Vec < T > {
89
90
if mem:: size_of :: < T > ( ) == 0 {
90
91
Vec { len : 0 , cap : uint:: MAX , ptr : 0 as * mut T }
@@ -110,6 +111,7 @@ impl<T> Vec<T> {
110
111
/// let vec = Vec::from_fn(3, |idx| idx * 2);
111
112
/// assert_eq!(vec, vec!(0, 2, 4));
112
113
/// ```
114
+ #[ inline]
113
115
pub fn from_fn ( length : uint , op: |uint| -> T ) -> Vec < T > {
114
116
unsafe {
115
117
let mut xs = Vec :: with_capacity ( length) ;
@@ -193,6 +195,7 @@ impl<T: Clone> Vec<T> {
193
195
/// let slice = [1, 2, 3];
194
196
/// let vec = Vec::from_slice(slice);
195
197
/// ```
198
+ #[ inline]
196
199
pub fn from_slice ( values : & [ T ] ) -> Vec < T > {
197
200
values. iter ( ) . map ( |x| x. clone ( ) ) . collect ( )
198
201
}
@@ -207,6 +210,7 @@ impl<T: Clone> Vec<T> {
207
210
/// let vec = Vec::from_elem(3, "hi");
208
211
/// println!("{}", vec); // prints [hi, hi, hi]
209
212
/// ```
213
+ #[ inline]
210
214
pub fn from_elem ( length : uint , value : T ) -> Vec < T > {
211
215
unsafe {
212
216
let mut xs = Vec :: with_capacity ( length) ;
@@ -353,6 +357,7 @@ impl<T:Clone> Clone for Vec<T> {
353
357
}
354
358
355
359
impl < T > FromIterator < T > for Vec < T > {
360
+ #[ inline]
356
361
fn from_iter < I : Iterator < T > > ( mut iterator : I ) -> Vec < T > {
357
362
let ( lower, _) = iterator. size_hint ( ) ;
358
363
let mut vector = Vec :: with_capacity ( lower) ;
@@ -364,6 +369,7 @@ impl<T> FromIterator<T> for Vec<T> {
364
369
}
365
370
366
371
impl < T > Extendable < T > for Vec < T > {
372
+ #[ inline]
367
373
fn extend < I : Iterator < T > > ( & mut self , mut iterator : I ) {
368
374
let ( lower, _) = iterator. size_hint ( ) ;
369
375
self . reserve_additional ( lower) ;
@@ -1029,6 +1035,7 @@ impl<T> Vec<T> {
1029
1035
/// vec.push_all_move(vec!(box 2, box 3, box 4));
1030
1036
/// assert_eq!(vec, vec!(box 1, box 2, box 3, box 4));
1031
1037
/// ```
1038
+ #[ inline]
1032
1039
pub fn push_all_move ( & mut self , other : Vec < T > ) {
1033
1040
self . extend ( other. move_iter ( ) ) ;
1034
1041
}
@@ -1306,6 +1313,7 @@ impl<T:PartialEq> Vec<T> {
1306
1313
/// let vec = vec!(1, 2, 3);
1307
1314
/// assert!(vec.contains(&1));
1308
1315
/// ```
1316
+ #[ inline]
1309
1317
pub fn contains ( & self , x : & T ) -> bool {
1310
1318
self . as_slice ( ) . contains ( x)
1311
1319
}
@@ -1544,8 +1552,11 @@ pub mod raw {
1544
1552
1545
1553
#[ cfg( test) ]
1546
1554
mod tests {
1555
+ extern crate test;
1556
+
1547
1557
use std:: prelude:: * ;
1548
1558
use std:: mem:: size_of;
1559
+ use test:: Bencher ;
1549
1560
use super :: { unzip, raw, Vec } ;
1550
1561
1551
1562
#[ test]
@@ -1836,4 +1847,111 @@ mod tests {
1836
1847
let mut v = vec ! [ BadElem ( 1 ) , BadElem ( 2 ) , BadElem ( 0xbadbeef ) , BadElem ( 4 ) ] ;
1837
1848
v. truncate ( 0 ) ;
1838
1849
}
1850
+
1851
+ #[ bench]
1852
+ fn bench_new ( b : & mut Bencher ) {
1853
+ b. iter ( || {
1854
+ let v: Vec < int > = Vec :: new ( ) ;
1855
+ assert_eq ! ( v. capacity( ) , 0 ) ;
1856
+ assert ! ( v. as_slice( ) == [ ] ) ;
1857
+ } )
1858
+ }
1859
+
1860
+ #[ bench]
1861
+ fn bench_with_capacity_0 ( b : & mut Bencher ) {
1862
+ b. iter ( || {
1863
+ let v: Vec < int > = Vec :: with_capacity ( 0 ) ;
1864
+ assert_eq ! ( v. capacity( ) , 0 ) ;
1865
+ assert ! ( v. as_slice( ) == [ ] ) ;
1866
+ } )
1867
+ }
1868
+
1869
+
1870
+ #[ bench]
1871
+ fn bench_with_capacity_5 ( b : & mut Bencher ) {
1872
+ b. iter ( || {
1873
+ let v: Vec < int > = Vec :: with_capacity ( 5 ) ;
1874
+ assert_eq ! ( v. capacity( ) , 5 ) ;
1875
+ assert ! ( v. as_slice( ) == [ ] ) ;
1876
+ } )
1877
+ }
1878
+
1879
+ #[ bench]
1880
+ fn bench_with_capacity_100 ( b : & mut Bencher ) {
1881
+ b. iter ( || {
1882
+ let v: Vec < int > = Vec :: with_capacity ( 100 ) ;
1883
+ assert_eq ! ( v. capacity( ) , 100 ) ;
1884
+ assert ! ( v. as_slice( ) == [ ] ) ;
1885
+ } )
1886
+ }
1887
+
1888
+ #[ bench]
1889
+ fn bench_from_fn_0 ( b : & mut Bencher ) {
1890
+ b. iter ( || {
1891
+ let v: Vec < int > = Vec :: from_fn ( 0 , |_| 5 ) ;
1892
+ assert ! ( v. as_slice( ) == [ ] ) ;
1893
+ } )
1894
+ }
1895
+
1896
+ #[ bench]
1897
+ fn bench_from_fn_5 ( b : & mut Bencher ) {
1898
+ b. iter ( || {
1899
+ let v: Vec < int > = Vec :: from_fn ( 5 , |_| 5 ) ;
1900
+ assert ! ( v. as_slice( ) == [ 5 , 5 , 5 , 5 , 5 ] ) ;
1901
+ } )
1902
+ }
1903
+
1904
+ #[ bench]
1905
+ fn bench_from_slice_0 ( b : & mut Bencher ) {
1906
+ b. iter ( || {
1907
+ let v: Vec < int > = Vec :: from_slice ( [ ] ) ;
1908
+ assert ! ( v. as_slice( ) == [ ] ) ;
1909
+ } )
1910
+ }
1911
+
1912
+ #[ bench]
1913
+ fn bench_from_slice_5 ( b : & mut Bencher ) {
1914
+ b. iter ( || {
1915
+ let v: Vec < int > = Vec :: from_slice ( [ 1 , 2 , 3 , 4 , 5 ] ) ;
1916
+ assert ! ( v. as_slice( ) == [ 1 , 2 , 3 , 4 , 5 ] ) ;
1917
+ } )
1918
+ }
1919
+
1920
+ #[ bench]
1921
+ fn bench_from_iter_0 ( b : & mut Bencher ) {
1922
+ b. iter ( || {
1923
+ let v0: Vec < int > = vec ! ( ) ;
1924
+ let v1: Vec < int > = FromIterator :: from_iter ( v0. move_iter ( ) ) ;
1925
+ assert ! ( v1. as_slice( ) == [ ] ) ;
1926
+ } )
1927
+ }
1928
+
1929
+ #[ bench]
1930
+ fn bench_from_iter_5 ( b : & mut Bencher ) {
1931
+ b. iter ( || {
1932
+ let v0: Vec < int > = vec ! ( 1 , 2 , 3 , 4 , 5 ) ;
1933
+ let v1: Vec < int > = FromIterator :: from_iter ( v0. move_iter ( ) ) ;
1934
+ assert ! ( v1. as_slice( ) == [ 1 , 2 , 3 , 4 , 5 ] ) ;
1935
+ } )
1936
+ }
1937
+
1938
+ #[ bench]
1939
+ fn bench_extend_0 ( b : & mut Bencher ) {
1940
+ b. iter ( || {
1941
+ let v0: Vec < int > = vec ! ( ) ;
1942
+ let mut v1: Vec < int > = vec ! ( 1 , 2 , 3 , 4 , 5 ) ;
1943
+ v1. extend ( v0. move_iter ( ) ) ;
1944
+ assert ! ( v1. as_slice( ) == [ 1 , 2 , 3 , 4 , 5 ] ) ;
1945
+ } )
1946
+ }
1947
+
1948
+ #[ bench]
1949
+ fn bench_extend_5 ( b : & mut Bencher ) {
1950
+ b. iter ( || {
1951
+ let v0: Vec < int > = vec ! ( 1 , 2 , 3 , 4 , 5 ) ;
1952
+ let mut v1: Vec < int > = vec ! ( 1 , 2 , 3 , 4 , 5 ) ;
1953
+ v1. extend ( v0. move_iter ( ) ) ;
1954
+ assert ! ( v1. as_slice( ) == [ 1 , 2 , 3 , 4 , 5 , 1 , 2 , 3 , 4 , 5 ] ) ;
1955
+ } )
1956
+ }
1839
1957
}
0 commit comments