$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r60003 - in sandbox/statistics/detail/assign: boost/assign/auto_size boost/assign/auto_size/detail libs/assign/src libs/assign/test
From: erwann.rogard_at_[hidden]
Date: 2010-02-28 18:33:30
Author: e_r
Date: 2010-02-28 18:33:28 EST (Sun, 28 Feb 2010)
New Revision: 60003
URL: http://svn.boost.org/trac/boost/changeset/60003
Log:
m
Added:
   sandbox/statistics/detail/assign/libs/assign/test/speed2.cpp   (contents, props changed)
   sandbox/statistics/detail/assign/libs/assign/test/speed2.h   (contents, props changed)
Text files modified: 
   sandbox/statistics/detail/assign/boost/assign/auto_size/detail/array_wrapper.hpp   |     6 +-----                                  
   sandbox/statistics/detail/assign/boost/assign/auto_size/detail/auto_size.hpp       |    17 ++++++-----------                       
   sandbox/statistics/detail/assign/boost/assign/auto_size/detail/csv.hpp             |     3 ---                                     
   sandbox/statistics/detail/assign/boost/assign/auto_size/ref_list_of.hpp            |     1 -                                       
   sandbox/statistics/detail/assign/boost/assign/auto_size/ref_list_of_csv.hpp        |     7 ++++---                                 
   sandbox/statistics/detail/assign/boost/assign/auto_size/ref_rebind_list_of_csv.hpp |     8 +++++---                                
   sandbox/statistics/detail/assign/libs/assign/src/main.cpp                          |     5 +++--                                   
   sandbox/statistics/detail/assign/libs/assign/test/speed_common.cpp                 |    20 ++++++++++++++++++++                    
   sandbox/statistics/detail/assign/libs/assign/test/speed_common.h                   |     7 +++++--                                 
   9 files changed, 44 insertions(+), 30 deletions(-)
Modified: sandbox/statistics/detail/assign/boost/assign/auto_size/detail/array_wrapper.hpp
==============================================================================
--- sandbox/statistics/detail/assign/boost/assign/auto_size/detail/array_wrapper.hpp	(original)
+++ sandbox/statistics/detail/assign/boost/assign/auto_size/detail/array_wrapper.hpp	2010-02-28 18:33:28 EST (Sun, 28 Feb 2010)
@@ -17,7 +17,7 @@
 namespace detail{
 namespace auto_size{
  
- 	// Exposes the boost::array interface. This is needed for csv support.
+ 	// This is needed for csv support.
     template<typename T,int N,template<typename> class Ref>
     class array_wrapper 
             : public array_interface<T,N,Ref,array_wrapper<T,N,Ref> >
@@ -28,9 +28,6 @@
                 
         public:
 
-//		array_wrapper(smart_ptr_ arg)
-//        	:ptr(arg){}
-
                 array_wrapper(){}		
                 
         ref_array_& ref_array_impl(){ 
@@ -47,7 +44,6 @@
         }
         
         private:
-        //mutable smart_ptr_ ptr;
 
                 mutable ref_array_ ref_array;
 
Modified: sandbox/statistics/detail/assign/boost/assign/auto_size/detail/auto_size.hpp
==============================================================================
--- sandbox/statistics/detail/assign/boost/assign/auto_size/detail/auto_size.hpp	(original)
+++ sandbox/statistics/detail/assign/boost/assign/auto_size/detail/auto_size.hpp	2010-02-28 18:33:28 EST (Sun, 28 Feb 2010)
@@ -81,28 +81,23 @@
             typename E,typename T,int N,template<typename> class Ref,typename P
     >
     class expr : public default_policy::apply<E,T,N,Ref>::type{
-        typedef boost::mpl::int_<N> int_n_;
         typedef boost::mpl::int_<1> int_1_;
+        typedef boost::mpl::int_<N> int_n_;
         typedef typename Ref<T>::type ref_;
-
                 typedef typename default_policy::apply<E,T,N,Ref>::type super_;
 
         public:       
 
-        typedef typename 
-        	boost::mpl::equal_to<int_n_,int_1_>::type is_first_;
-        typedef typename 
-        	boost::mpl::if_<is_first_,E,const E&>::type previous_;
+        typedef typename boost::mpl::equal_to<int_n_,int_1_>::type is_1st_;
+        typedef typename boost::mpl::if_<is_1st_,E,const E&>::type previous_;
         typedef typename next<E,T,N,Ref,P>::type next_;
-                                
-        expr(const E& p,T& t):previous(p),ref(t){} 
-
         typedef next_ result_type;
+
+        expr(const E& p,T& t):previous(p),ref(t){} 
         next_ operator()(T& t)const{ return next_(*this,t); }
 
         mutable previous_ previous;
         mutable ref_ ref;
-
     };
 
     // ---- write_to_array ---- //
@@ -114,7 +109,7 @@
             template<typename> class Ref,typename P>
     void write_to_array(A& a,const expr<E,T,N,Ref,P>& e){
         typedef expr<E,T,N,Ref,P> expr_;
-        typedef typename expr_::is_first_ exit_;
+        typedef typename expr_::is_1st_ exit_;
         write_to_array(a,e,exit_());
     }
             
Modified: sandbox/statistics/detail/assign/boost/assign/auto_size/detail/csv.hpp
==============================================================================
--- sandbox/statistics/detail/assign/boost/assign/auto_size/detail/csv.hpp	(original)
+++ sandbox/statistics/detail/assign/boost/assign/auto_size/detail/csv.hpp	2010-02-28 18:33:28 EST (Sun, 28 Feb 2010)
@@ -40,9 +40,6 @@
 #endif
 
 #define BOOST_ASSIGN_CSV_ARG(z,n,arg) (BOOST_PP_CAT(arg,n))
-#define BOOST_ASSIGN_CSV_CALL(fun,N,arg) 									\
-	boost::assign::fun BOOST_PP_REPEAT(N,BOOST_ASSIGN_CSV_ARG,arg)			\
-/**/    
 
 #define BOOST_ASSIGN_CSV_ITER_UNQUAL(F,T,U,N)								\
 namespace boost{															\
Modified: sandbox/statistics/detail/assign/boost/assign/auto_size/ref_list_of.hpp
==============================================================================
--- sandbox/statistics/detail/assign/boost/assign/auto_size/ref_list_of.hpp	(original)
+++ sandbox/statistics/detail/assign/boost/assign/auto_size/ref_list_of.hpp	2010-02-28 18:33:28 EST (Sun, 28 Feb 2010)
@@ -8,7 +8,6 @@
 //////////////////////////////////////////////////////////////////////////////
 #ifndef BOOST_ASSIGN_AUTO_SIZE_REF_LIST_OF_ER_2010_HPP
 #define BOOST_ASSIGN_AUTO_SIZE_REF_LIST_OF_ER_2010_HPP
-#include <boost/typeof/typeof.hpp> // tmp.
 #include <boost/assign/auto_size/detail/auto_size.hpp>
 #include <boost/assign/auto_size/detail/array_wrapper.hpp>
 
Modified: sandbox/statistics/detail/assign/boost/assign/auto_size/ref_list_of_csv.hpp
==============================================================================
--- sandbox/statistics/detail/assign/boost/assign/auto_size/ref_list_of_csv.hpp	(original)
+++ sandbox/statistics/detail/assign/boost/assign/auto_size/ref_list_of_csv.hpp	2010-02-28 18:33:28 EST (Sun, 28 Feb 2010)
@@ -8,10 +8,11 @@
 //////////////////////////////////////////////////////////////////////////////
 #ifndef BOOST_ASSIGN_AUTO_SIZE_REF_LIST_OF_CSV_ER_2010_HPP
 #define BOOST_ASSIGN_AUTO_SIZE_REF_LIST_OF_CSV_ER_2010_HPP
-#include <boost/typeof/typeof.hpp> // tmp.
-#include <boost/assign/auto_size/detail/auto_size.hpp>
-#include <boost/assign/auto_size/detail/array_wrapper.hpp>
 
+// Usage:
+// cref_list_of_csv(a,b,c);
+//
+// See ref_rebind_list_of.hpp
 
 #define BOOST_ASSIGN_CSV_ref boost::assign::detail::auto_size::ref_copy
 #include <boost/assign/auto_size/detail/csv.hpp>
Modified: sandbox/statistics/detail/assign/boost/assign/auto_size/ref_rebind_list_of_csv.hpp
==============================================================================
--- sandbox/statistics/detail/assign/boost/assign/auto_size/ref_rebind_list_of_csv.hpp	(original)
+++ sandbox/statistics/detail/assign/boost/assign/auto_size/ref_rebind_list_of_csv.hpp	2010-02-28 18:33:28 EST (Sun, 28 Feb 2010)
@@ -8,9 +8,11 @@
 //////////////////////////////////////////////////////////////////////////////
 #ifndef BOOST_ASSIGN_AUTO_SIZE_REF_REBIND_LIST_OF_CSV_ER_2010_HPP
 #define BOOST_ASSIGN_AUTO_SIZE_REF_REBIND_LIST_OF_CSV_ER_2010_HPP
-#include <boost/typeof/typeof.hpp> // tmp.
-#include <boost/assign/auto_size/detail/auto_size.hpp>
-#include <boost/assign/auto_size/detail/array_wrapper.hpp>
+
+// Usage:
+// cref_rebind_list_of_csv(a,b,c);
+//
+// See ref_list_of.hpp
 
 #define BOOST_ASSIGN_CSV_ref boost::assign::detail::auto_size::ref_rebind
 #include <boost/assign/auto_size/detail/csv.hpp>
Modified: sandbox/statistics/detail/assign/libs/assign/src/main.cpp
==============================================================================
--- sandbox/statistics/detail/assign/libs/assign/src/main.cpp	(original)
+++ sandbox/statistics/detail/assign/libs/assign/src/main.cpp	2010-02-28 18:33:28 EST (Sun, 28 Feb 2010)
@@ -1,14 +1,15 @@
 #include <iostream>
 #include <libs/assign/example/ref_list_of.h>
 //#include <libs/assign/test/speed.h>
-#include <libs/assign/test/speed_csv.h>
+//#include <libs/assign/test/speed_csv.h>
+#include <libs/assign/test/speed2.h>
 //#include <libs/assign/test/static_list_of_auto_size.h>
 
 int main (int argc, char * const argv[]) {
 
         example_ref_list_of(std::cout);
         //test_speed(std::cout);
-    test_speed_csv(std::cout);
+    test_speed2(std::cout);
 //	check_static_list_of_auto_size();
 
         return 0;
Added: sandbox/statistics/detail/assign/libs/assign/test/speed2.cpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/detail/assign/libs/assign/test/speed2.cpp	2010-02-28 18:33:28 EST (Sun, 28 Feb 2010)
@@ -0,0 +1,392 @@
+//////////////////////////////////////////////////////////////////////////////
+// test::speed.cpp                                                          //
+//                                                                          //
+//////////////////////////////////////////////////////////////////////////////
+#include <iostream>
+#include <vector>
+#include <string>
+#include <boost/progress.hpp>
+#include <boost/bind.hpp>
+#include <boost/typeof/typeof.hpp>
+#include <boost/assign/list_of.hpp>
+#include <boost/assign/auto_size/ref_list_of.hpp>
+
+#define BOOST_ASSIGN_CSV_SIZE 90
+#include <boost/assign/auto_size/ref_list_of_csv.hpp>
+#undef BOOST_ASSIGN_CSV_SIZE
+
+#include <libs/assign/test/speed_common.h>
+#include <libs/assign/test/speed.h>
+
+void test_speed2(std::ostream& os)
+{
+	os << "-> test_speed : " << std::endl;
+    std::vector<int>    // 50 items
+        a00 = rand_vec(), 
+        a01 = rand_vec(), 
+        a02 = rand_vec(), 
+        a03 = rand_vec(), 
+        a04 = rand_vec(), 
+        a05 = rand_vec(), 
+        a06 = rand_vec(), 
+        a07 = rand_vec(), 
+        a08 = rand_vec(), 
+        a09 = rand_vec(), 
+        a10 = rand_vec(), 
+        a11 = rand_vec(), 
+        a12 = rand_vec(), 
+        a13 = rand_vec(), 
+        a14 = rand_vec(), 
+        a15 = rand_vec(), 
+        a16 = rand_vec(), 
+        a17 = rand_vec(), 
+        a18 = rand_vec(), 
+        a19 = rand_vec(), 
+        a20 = rand_vec(), 
+        a21 = rand_vec(), 
+        a22 = rand_vec(), 
+        a23 = rand_vec(), 
+        a24 = rand_vec(), 
+        a25 = rand_vec(), 
+        a26 = rand_vec(), 
+        a27 = rand_vec(), 
+        a28 = rand_vec(), 
+        a29 = rand_vec(), 
+        a30 = rand_vec(), 
+        a31 = rand_vec(), 
+        a32 = rand_vec(), 
+        a33 = rand_vec(), 
+        a34 = rand_vec(), 
+        a35 = rand_vec(), 
+        a36 = rand_vec(), 
+        a37 = rand_vec(), 
+        a38 = rand_vec(), 
+        a39 = rand_vec(), 
+        a40 = rand_vec(), 
+        a41 = rand_vec(), 
+        a42 = rand_vec(), 
+        a43 = rand_vec(), 
+        a44 = rand_vec(), 
+        a45 = rand_vec(), 
+        a46 = rand_vec(), 
+        a47 = rand_vec(), 
+        a48 = rand_vec(), 
+        a49 = rand_vec(),
+        a50 = rand_vec(), 
+        a51 = rand_vec(), 
+        a52 = rand_vec(), 
+        a53 = rand_vec(), 
+        a54 = rand_vec(), 
+        a55 = rand_vec(), 
+        a56 = rand_vec(), 
+        a57 = rand_vec(), 
+        a58 = rand_vec(), 
+        a59 = rand_vec(),
+        a60 = rand_vec(), 
+        a61 = rand_vec(), 
+        a62 = rand_vec(), 
+        a63 = rand_vec(), 
+        a64 = rand_vec(), 
+        a65 = rand_vec(), 
+        a66 = rand_vec(), 
+        a67 = rand_vec(), 
+        a68 = rand_vec(), 
+        a69 = rand_vec(),
+        a70 = rand_vec(), 
+        a71 = rand_vec(), 
+        a72 = rand_vec(), 
+        a73 = rand_vec(), 
+        a74 = rand_vec(), 
+        a75 = rand_vec(), 
+        a76 = rand_vec(), 
+        a77 = rand_vec(), 
+        a78 = rand_vec(), 
+        a79 = rand_vec(),
+        a80 = rand_vec(), 
+        a81 = rand_vec(), 
+        a82 = rand_vec(), 
+        a83 = rand_vec(), 
+        a84 = rand_vec(), 
+        a85 = rand_vec(), 
+        a86 = rand_vec(), 
+        a87 = rand_vec(), 
+        a88 = rand_vec(), 
+        a89 = rand_vec();
+
+	typedef boost::progress_timer timer_;
+    
+    const int n = 100 * 1000 * 1000;
+    
+    {
+        int const N = 1;
+        os << "cref_list_of(" << N << ") => ";
+        {
+            timer_ timer;
+            for(int i = 0; i < n; ++i)
+            {
+                BOOST_AUTO(rng, boost::assign::cref_list_of(a00));
+                int sz = (int)rng.size();
+                if(sz != N)
+                    os << "ERROR\n";
+            }
+        }
+        os << "cref_list_of_csv(" << N << ") => ";
+        {
+            timer_ timer;
+            for(int i = 0; i < n; ++i)
+            {
+                BOOST_AUTO(rng, boost::assign::cref_list_of_csv(a00));
+                int sz = (int)rng.size();
+                if(sz != N)
+                    os << "ERROR\n";
+            }
+        }
+        os << "cref_list_of<>(" << N << ") => ";
+        {
+ 			timer_ timer;
+            for(int i = 0; i < n; ++i)
+            {
+                BOOST_AUTO(rng, boost::assign::cref_list_of<N>(a00));
+                int sz = (int)rng.size();
+                if(sz != N)
+                    os << "ERROR\n";
+            }
+        }
+		// For N > 1, list_of is too slow to be included in this test.
+        os << "list_of(" << N << ") => ";
+        {
+ 			timer_ timer;
+            for(int i = 0; i < n; ++i)
+            {
+                BOOST_AUTO(rng, boost::assign::list_of(a00));
+                int sz = (int)rng.size();
+                if(sz != N)
+                    os << "ERROR\n";
+            }
+        }
+    }
+    {
+        int const N = 3;
+        os << "cref_list_of(" << N << ") => ";
+        {
+ 			timer_ timer;
+            for(int i = 0; i < n; ++i)
+            {
+                BOOST_AUTO(rng, boost::assign::cref_list_of(a00)(a01)(a02));
+                int sz = (int)rng.size();
+                if(sz != N)
+                    os << "ERROR\n";
+            }
+        }
+        os << "cref_list_of_csv(" << N << ") => ";
+        {
+ 			timer_ timer;
+            for(int i = 0; i < n; ++i)
+            {
+                BOOST_AUTO(rng, boost::assign::cref_list_of_csv(a00,a01,a02));
+                int sz = (int)rng.size();
+                if(sz != N)
+                    os << "ERROR\n";
+            }
+        }
+        os << "cref_list_of<>(" << N << ") => ";
+        {
+ 			timer_ timer;
+            for(int i = 0; i < n; ++i)
+            {
+                BOOST_AUTO(rng, boost::assign::cref_list_of<3>(a00)(a01)(a02));
+                int sz = (int)rng.size();
+                if(sz != N)
+                    os << "ERROR\n";
+            }
+        }
+    }
+    
+    {
+        int const N = 10;
+        os << "cref_list_of(" << N << ") => ";
+        {
+ 			timer_ timer;
+            for(int idx = 0; idx < n; ++idx)
+            {
+                BOOST_AUTO(rng, boost::assign::cref_list_of(a00)(a01)(a02)(a03)(a04)
+                                                           (a05)(a06)(a07)(a08)(a09));
+                int sz = (int)rng.size();
+                if(sz != N)
+                    os << "ERROR\n";
+            }
+        }
+        os << "cref_list_of_csv(" << N << ") => ";
+        {
+ 			timer_ timer;
+            for(int idx = 0; idx < n; ++idx)
+            {
+                BOOST_AUTO(rng, boost::assign::cref_list_of_csv(
+                											a00,a01,a02,a03,a04
+                                                           	,a05,a06,a07,a08,a09));
+                int sz = (int)rng.size();
+                if(sz != N)
+                    os << "ERROR\n";
+            }
+        }
+        os << "cref_list_of<>(" << N << ") => ";
+        {
+ 			timer_ timer;
+            for(int idx = 0; idx < n; ++idx)
+            {
+                BOOST_AUTO(rng, boost::assign::cref_list_of<10>
+                                                            (a00)(a01)(a02)(a03)(a04)
+                                                            (a05)(a06)(a07)(a08)(a09));
+                int sz = (int)rng.size();
+                if(sz != N)
+                    os << "ERROR\n";
+            }
+        }
+    }
+    {
+        int const N = 30;
+        os << "cref_list_of(" << N << ") => ";
+        {
+ 			timer_ timer;
+            for(int idx = 0; idx < n; ++idx)
+            {
+                BOOST_AUTO(rng, boost::assign::cref_list_of(a00)(a01)(a02)(a03)(a04)
+                                                            (a05)(a06)(a07)(a08)(a09)
+                                                            (a10)(a11)(a12)(a13)(a14)
+                                                            (a15)(a16)(a17)(a18)(a19)
+                                                            (a20)(a21)(a22)(a23)(a24)
+                                                            (a25)(a26)(a27)(a28)(a29));
+                int sz = (int)rng.size();
+                if(sz != N)
+                    os << "ERROR\n";
+            }
+        }
+        os << "cref_list_of_csv(" << N << ") => ";
+        {
+ 			timer_ timer;
+            for(int idx = 0; idx < n; ++idx)
+            {
+                BOOST_AUTO(rng, boost::assign::cref_list_of_csv(
+                											a00,a01,a02,a03,a04
+                                                            ,a05,a06,a07,a08,a09
+                                                            ,a10,a11,a12,a13,a14
+                                                            ,a15,a16,a17,a18,a19
+                                                            ,a20,a21,a22,a23,a24
+                                                            ,a25,a26,a27,a28,a29));
+                int sz = (int)rng.size();
+                if(sz != N)
+                    os << "ERROR\n";
+            }
+        }
+        os << "cref_list_of<>(" << N << ") => ";
+        {
+ 			timer_ timer;
+            for(int idx = 0; idx < n; ++idx)
+            {
+                BOOST_AUTO(rng, boost::assign::cref_list_of<N>
+                                                            (a00)(a01)(a02)(a03)(a04)
+                                                            (a05)(a06)(a07)(a08)(a09)
+                                                            (a10)(a11)(a12)(a13)(a14)
+                                                            (a15)(a16)(a17)(a18)(a19)
+                                                            (a20)(a21)(a22)(a23)(a24)
+                                                            (a25)(a26)(a27)(a28)(a29));
+                int sz = (int)rng.size();
+                if(sz != N)
+                    os << "ERROR\n";
+            }
+        }
+    }	
+
+    {
+        int const N = 90;
+        os << "cref_list_of(" << N << ") => ";
+        {
+ 			timer_ timer;
+            for(int idx = 0; idx < n; ++idx)
+            {
+                BOOST_AUTO(rng, boost::assign::cref_list_of(a00)(a01)(a02)(a03)(a04)
+                                                            (a05)(a06)(a07)(a08)(a09)
+                                                            (a10)(a11)(a12)(a13)(a14)
+                                                            (a15)(a16)(a17)(a18)(a19)
+                                                            (a20)(a21)(a22)(a23)(a24)
+                                                            (a25)(a26)(a27)(a28)(a29)
+                                                            (a30)(a31)(a32)(a33)(a34)
+                                                            (a35)(a36)(a37)(a38)(a39)
+                                                            (a40)(a41)(a42)(a43)(a44)
+                                                            (a45)(a46)(a47)(a48)(a49)
+                                                            (a50)(a51)(a52)(a53)(a54)
+                                                            (a55)(a56)(a57)(a58)(a59)
+                                                            (a60)(a61)(a62)(a63)(a64)
+                                                            (a65)(a66)(a67)(a68)(a69)
+                                                            (a70)(a71)(a72)(a73)(a74)
+                                                            (a75)(a76)(a77)(a78)(a79)
+                                                            (a80)(a81)(a82)(a83)(a84)
+                                                            (a85)(a86)(a87)(a88)(a89));
+                int sz = (int)rng.size();
+                if(sz != N)
+                    os << "ERROR\n";
+            }
+        }
+        os << "cref_list_of_csv(" << N << ") => ";
+        {
+ 			timer_ timer;
+            for(int idx = 0; idx < n; ++idx)
+            {
+                BOOST_AUTO(rng, boost::assign::cref_list_of_csv(
+                											a00,a01,a02,a03,a04
+                                                            ,a05,a06,a07,a08,a09
+                                                            ,a10,a11,a12,a13,a14
+                                                            ,a15,a16,a17,a18,a19
+                                                            ,a20,a21,a22,a23,a24
+                                                            ,a25,a26,a27,a28,a29
+                                                            ,a30,a31,a32,a33,a34
+                                                            ,a35,a36,a37,a38,a39
+                                                            ,a40,a41,a42,a43,a44
+                                                            ,a45,a46,a47,a48,a49
+                                                            ,a50,a51,a52,a53,a54
+                                                            ,a55,a56,a57,a58,a59
+                                                            ,a60,a61,a62,a63,a64
+                                                            ,a65,a66,a67,a68,a69
+                                                            ,a70,a71,a72,a73,a74
+                                                            ,a75,a76,a77,a78,a79
+                                                            ,a80,a81,a82,a83,a84
+                                                            ,a85,a86,a87,a88,a89));
+                int sz = (int)rng.size();
+                if(sz != N)
+                    os << "ERROR\n";
+            }
+        }
+        os << "cref_list_of<>(" << N << ") => ";
+        {
+ 			timer_ timer;
+            for(int idx = 0; idx < n; ++idx)
+            {
+                 BOOST_AUTO(rng, boost::assign::cref_list_of<N>
+                                                            (a00)(a01)(a02)(a03)(a04)
+                                                            (a05)(a06)(a07)(a08)(a09)
+                                                            (a10)(a11)(a12)(a13)(a14)
+                                                            (a15)(a16)(a17)(a18)(a19)
+                                                            (a20)(a21)(a22)(a23)(a24)
+                                                            (a25)(a26)(a27)(a28)(a29)
+                                                            (a30)(a31)(a32)(a33)(a34)
+                                                            (a35)(a36)(a37)(a38)(a39)
+                                                            (a40)(a41)(a42)(a43)(a44)
+                                                            (a45)(a46)(a47)(a48)(a49)
+                                                            (a50)(a51)(a52)(a53)(a54)
+                                                            (a55)(a56)(a57)(a58)(a59)
+                                                            (a60)(a61)(a62)(a63)(a64)
+                                                            (a65)(a66)(a67)(a68)(a69)
+                                                            (a70)(a71)(a72)(a73)(a74)
+                                                            (a75)(a76)(a77)(a78)(a79)
+                                                            (a80)(a81)(a82)(a83)(a84)
+                                                            (a85)(a86)(a87)(a88)(a89));
+                int sz = (int)rng.size();
+                if(sz != N)
+                    os << "ERROR\n";
+            }
+        }
+    }	
+
+
+    os << "<- " << std::endl;
+};
Added: sandbox/statistics/detail/assign/libs/assign/test/speed2.h
==============================================================================
--- (empty file)
+++ sandbox/statistics/detail/assign/libs/assign/test/speed2.h	2010-02-28 18:33:28 EST (Sun, 28 Feb 2010)
@@ -0,0 +1,11 @@
+//////////////////////////////////////////////////////////////////////////////
+// test::speed2.h                                                           //
+//                                                                          //
+//////////////////////////////////////////////////////////////////////////////
+#ifndef LIBS_ASSIGN_TEST_SPEED2_ER_2010_H
+#define LIBS_ASSIGN_TEST_SPEED2_ER_2010_H
+#include <ostream>
+
+void test_speed2(std::ostream&);
+
+#endif
Modified: sandbox/statistics/detail/assign/libs/assign/test/speed_common.cpp
==============================================================================
--- sandbox/statistics/detail/assign/libs/assign/test/speed_common.cpp	(original)
+++ sandbox/statistics/detail/assign/libs/assign/test/speed_common.cpp	2010-02-28 18:33:28 EST (Sun, 28 Feb 2010)
@@ -4,6 +4,8 @@
 //////////////////////////////////////////////////////////////////////////////
 #include <algorithm>
 #include <string>
+#include <vector>
+#include <boost/bind.hpp>
 #include <libs/assign/test/speed_common.h>
 
 // This file was provided by M.P.G 
@@ -28,3 +30,21 @@
     std::generate_n(std::back_inserter(result), len, &rand_letter);
     return result;
 }
+
+std::vector<int> 
+rand_vec()
+{
+    std::vector<int> result(
+        (std::size_t)rand(1, 100)
+    );
+    std::generate(
+        result.begin(), 
+        result.end(), 
+        boost::bind(
+            &rand, 
+            0, 
+            20
+        )
+    );
+    return result;
+}
Modified: sandbox/statistics/detail/assign/libs/assign/test/speed_common.h
==============================================================================
--- sandbox/statistics/detail/assign/libs/assign/test/speed_common.h	(original)
+++ sandbox/statistics/detail/assign/libs/assign/test/speed_common.h	2010-02-28 18:33:28 EST (Sun, 28 Feb 2010)
@@ -4,10 +4,13 @@
 //////////////////////////////////////////////////////////////////////////////
 #ifndef LIBS_ASSIGN_TEST_SPEED_COMMON_CSV_ER_2010_H
 #define LIBS_ASSIGN_TEST_SPEED_COMMON_CSV_ER_2010_H
+#include <vector>
+#include <string>
 
-inline double uniform_deviate ( int seed );
-inline int rand(int M, int N);
+double uniform_deviate ( int seed );
+int rand(int M, int N);
 char rand_letter();
 std::string rand_str(int len);
+std::vector<int> rand_vec();
 
 #endif
\ No newline at end of file