@@ -85,6 +85,7 @@ impl<T> Vec<T> {
8585 /// # use std::vec::Vec;
8686 /// let vec: Vec<int> = Vec::with_capacity(10);
8787 /// ```
88+ #[ inline]
8889 pub fn with_capacity ( capacity : uint ) -> Vec < T > {
8990 if mem:: size_of :: < T > ( ) == 0 {
9091 Vec { len : 0 , cap : uint:: MAX , ptr : 0 as * mut T }
@@ -110,6 +111,7 @@ impl<T> Vec<T> {
110111 /// let vec = Vec::from_fn(3, |idx| idx * 2);
111112 /// assert_eq!(vec, vec!(0, 2, 4));
112113 /// ```
114+ #[ inline]
113115 pub fn from_fn ( length : uint , op: |uint| -> T ) -> Vec < T > {
114116 unsafe {
115117 let mut xs = Vec :: with_capacity ( length) ;
@@ -193,6 +195,7 @@ impl<T: Clone> Vec<T> {
193195 /// let slice = [1, 2, 3];
194196 /// let vec = Vec::from_slice(slice);
195197 /// ```
198+ #[ inline]
196199 pub fn from_slice ( values : & [ T ] ) -> Vec < T > {
197200 values. iter ( ) . map ( |x| x. clone ( ) ) . collect ( )
198201 }
@@ -207,6 +210,7 @@ impl<T: Clone> Vec<T> {
207210 /// let vec = Vec::from_elem(3, "hi");
208211 /// println!("{}", vec); // prints [hi, hi, hi]
209212 /// ```
213+ #[ inline]
210214 pub fn from_elem ( length : uint , value : T ) -> Vec < T > {
211215 unsafe {
212216 let mut xs = Vec :: with_capacity ( length) ;
@@ -353,6 +357,7 @@ impl<T:Clone> Clone for Vec<T> {
353357}
354358
355359impl < T > FromIterator < T > for Vec < T > {
360+ #[ inline]
356361 fn from_iter < I : Iterator < T > > ( mut iterator : I ) -> Vec < T > {
357362 let ( lower, _) = iterator. size_hint ( ) ;
358363 let mut vector = Vec :: with_capacity ( lower) ;
@@ -364,6 +369,7 @@ impl<T> FromIterator<T> for Vec<T> {
364369}
365370
366371impl < T > Extendable < T > for Vec < T > {
372+ #[ inline]
367373 fn extend < I : Iterator < T > > ( & mut self , mut iterator : I ) {
368374 let ( lower, _) = iterator. size_hint ( ) ;
369375 self . reserve_additional ( lower) ;
@@ -1029,6 +1035,7 @@ impl<T> Vec<T> {
10291035 /// vec.push_all_move(vec!(box 2, box 3, box 4));
10301036 /// assert_eq!(vec, vec!(box 1, box 2, box 3, box 4));
10311037 /// ```
1038+ #[ inline]
10321039 pub fn push_all_move ( & mut self , other : Vec < T > ) {
10331040 self . extend ( other. move_iter ( ) ) ;
10341041 }
@@ -1306,6 +1313,7 @@ impl<T:PartialEq> Vec<T> {
13061313 /// let vec = vec!(1, 2, 3);
13071314 /// assert!(vec.contains(&1));
13081315 /// ```
1316+ #[ inline]
13091317 pub fn contains ( & self , x : & T ) -> bool {
13101318 self . as_slice ( ) . contains ( x)
13111319 }
@@ -1544,8 +1552,11 @@ pub mod raw {
15441552
15451553#[ cfg( test) ]
15461554mod tests {
1555+ extern crate test;
1556+
15471557 use std:: prelude:: * ;
15481558 use std:: mem:: size_of;
1559+ use test:: Bencher ;
15491560 use super :: { unzip, raw, Vec } ;
15501561
15511562 #[ test]
@@ -1836,4 +1847,111 @@ mod tests {
18361847 let mut v = vec ! [ BadElem ( 1 ) , BadElem ( 2 ) , BadElem ( 0xbadbeef ) , BadElem ( 4 ) ] ;
18371848 v. truncate ( 0 ) ;
18381849 }
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+ }
18391957}
0 commit comments