@@ -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 }
@@ -1836,4 +1844,111 @@ mod tests {
18361844 let mut v = vec ! [ BadElem ( 1 ) , BadElem ( 2 ) , BadElem ( 0xbadbeef ) , BadElem ( 4 ) ] ;
18371845 v. truncate ( 0 ) ;
18381846 }
1847+
1848+ #[ bench]
1849+ fn bench_new ( b : & mut Bencher ) {
1850+ b. iter ( || {
1851+ let v: Vec < int > = Vec :: new ( ) ;
1852+ assert_eq ! ( v. capacity( ) , 0 ) ;
1853+ assert ! ( v. as_slice( ) == [ ] ) ;
1854+ } )
1855+ }
1856+
1857+ #[ bench]
1858+ fn bench_with_capacity_0 ( b : & mut Bencher ) {
1859+ b. iter ( || {
1860+ let v: Vec < int > = Vec :: with_capacity ( 0 ) ;
1861+ assert_eq ! ( v. capacity( ) , 0 ) ;
1862+ assert ! ( v. as_slice( ) == [ ] ) ;
1863+ } )
1864+ }
1865+
1866+
1867+ #[ bench]
1868+ fn bench_with_capacity_5 ( b : & mut Bencher ) {
1869+ b. iter ( || {
1870+ let v: Vec < int > = Vec :: with_capacity ( 5 ) ;
1871+ assert_eq ! ( v. capacity( ) , 5 ) ;
1872+ assert ! ( v. as_slice( ) == [ ] ) ;
1873+ } )
1874+ }
1875+
1876+ #[ bench]
1877+ fn bench_with_capacity_100 ( b : & mut Bencher ) {
1878+ b. iter ( || {
1879+ let v: Vec < int > = Vec :: with_capacity ( 100 ) ;
1880+ assert_eq ! ( v. capacity( ) , 100 ) ;
1881+ assert ! ( v. as_slice( ) == [ ] ) ;
1882+ } )
1883+ }
1884+
1885+ #[ bench]
1886+ fn bench_from_fn_0 ( b : & mut Bencher ) {
1887+ b. iter ( || {
1888+ let v: Vec < int > = Vec :: from_fn ( 0 , |_| 5 ) ;
1889+ assert ! ( v. as_slice( ) == [ ] ) ;
1890+ } )
1891+ }
1892+
1893+ #[ bench]
1894+ fn bench_from_fn_5 ( b : & mut Bencher ) {
1895+ b. iter ( || {
1896+ let v: Vec < int > = Vec :: from_fn ( 5 , |_| 5 ) ;
1897+ assert ! ( v. as_slice( ) == [ 5 , 5 , 5 , 5 , 5 ] ) ;
1898+ } )
1899+ }
1900+
1901+ #[ bench]
1902+ fn bench_from_slice_0 ( b : & mut Bencher ) {
1903+ b. iter ( || {
1904+ let v: Vec < int > = Vec :: from_slice ( [ ] ) ;
1905+ assert ! ( v. as_slice( ) == [ ] ) ;
1906+ } )
1907+ }
1908+
1909+ #[ bench]
1910+ fn bench_from_slice_5 ( b : & mut Bencher ) {
1911+ b. iter ( || {
1912+ let v: Vec < int > = Vec :: from_slice ( [ 1 , 2 , 3 , 4 , 5 ] ) ;
1913+ assert ! ( v. as_slice( ) == [ 1 , 2 , 3 , 4 , 5 ] ) ;
1914+ } )
1915+ }
1916+
1917+ #[ bench]
1918+ fn bench_from_iter_0 ( b : & mut Bencher ) {
1919+ b. iter ( || {
1920+ let v0: Vec < int > = vec ! ( ) ;
1921+ let v1: Vec < int > = FromIterator :: from_iter ( v0. move_iter ( ) ) ;
1922+ assert ! ( v1. as_slice( ) == [ ] ) ;
1923+ } )
1924+ }
1925+
1926+ #[ bench]
1927+ fn bench_from_iter_5 ( b : & mut Bencher ) {
1928+ b. iter ( || {
1929+ let v0: Vec < int > = vec ! ( 1 , 2 , 3 , 4 , 5 ) ;
1930+ let v1: Vec < int > = FromIterator :: from_iter ( v0. move_iter ( ) ) ;
1931+ assert ! ( v1. as_slice( ) == [ 1 , 2 , 3 , 4 , 5 ] ) ;
1932+ } )
1933+ }
1934+
1935+ #[ bench]
1936+ fn bench_extend_0 ( b : & mut Bencher ) {
1937+ b. iter ( || {
1938+ let v0: Vec < int > = vec ! ( ) ;
1939+ let mut v1: Vec < int > = vec ! ( 1 , 2 , 3 , 4 , 5 ) ;
1940+ v1. extend ( v0. move_iter ( ) ) ;
1941+ assert ! ( v1. as_slice( ) == [ 1 , 2 , 3 , 4 , 5 ] ) ;
1942+ } )
1943+ }
1944+
1945+ #[ bench]
1946+ fn bench_extend_5 ( b : & mut Bencher ) {
1947+ b. iter ( || {
1948+ let v0: Vec < int > = vec ! ( 1 , 2 , 3 , 4 , 5 ) ;
1949+ let mut v1: Vec < int > = vec ! ( 1 , 2 , 3 , 4 , 5 ) ;
1950+ v1. extend ( v0. move_iter ( ) ) ;
1951+ assert ! ( v1. as_slice( ) == [ 1 , 2 , 3 , 4 , 5 , 1 , 2 , 3 , 4 , 5 ] ) ;
1952+ } )
1953+ }
18391954}
0 commit comments