$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r59974 - in sandbox/statistics/detail/assign: boost/assign/auto_size/detail libs/assign/doc libs/assign/src libs/assign/test
From: erwann.rogard_at_[hidden]
Date: 2010-02-27 21:23:06
Author: e_r
Date: 2010-02-27 21:23:05 EST (Sat, 27 Feb 2010)
New Revision: 59974
URL: http://svn.boost.org/trac/boost/changeset/59974
Log:
m
Added:
   sandbox/statistics/detail/assign/libs/assign/doc/speed_csv.txt   (contents, props changed)
   sandbox/statistics/detail/assign/libs/assign/test/speed_common.cpp   (contents, props changed)
   sandbox/statistics/detail/assign/libs/assign/test/speed_common.h   (contents, props changed)
   sandbox/statistics/detail/assign/libs/assign/test/speed_csv.cpp   (contents, props changed)
   sandbox/statistics/detail/assign/libs/assign/test/speed_csv.h   (contents, props changed)
Text files modified: 
   sandbox/statistics/detail/assign/boost/assign/auto_size/detail/auto_size.hpp |    12 ++++++++----                            
   sandbox/statistics/detail/assign/libs/assign/src/main.cpp                    |     4 ++--                                    
   2 files changed, 10 insertions(+), 6 deletions(-)
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-27 21:23:05 EST (Sat, 27 Feb 2010)
@@ -26,15 +26,19 @@
 // convertible to a range constructible from a pair of iterators.
 //
 // This approach improves upon ref_list_of<int>() by deducing the number of 
-// arguments at compile time, factors the reference wrapper into a template.
-// In most situations, a reference wrapper that has copy rather than 
-// rebind semantics for operator= is preferable.
+// arguments at compile time and factors the reference wrapper into a template. 
+// In addition, this set up is amenable to comma separated arguments which is 
+// provided in file csv.hpp
+//
+// Warning:
+// In most situations, a reference wrapper that has copy rather than rebind 
+// semantics for operator= is preferable. 
 //    
 // Acknowledgement: The idea of this class was developed in collaboration 
 // with M.P.G
 //
 // Revision history:
-// Feb 27, 2010 : support for comma separated arguments (csv.hpp)
+// Feb 27, 2010 : Support for comma separated arguments (See csv.hpp)
 // Feb 25, 2010 : Complemented the boost::array interface
 // Feb 21, 2010 : Made member variables mutable and added constness to member 
 // functions where appropriate.
Added: sandbox/statistics/detail/assign/libs/assign/doc/speed_csv.txt
==============================================================================
--- (empty file)
+++ sandbox/statistics/detail/assign/libs/assign/doc/speed_csv.txt	2010-02-27 21:23:05 EST (Sat, 27 Feb 2010)
@@ -0,0 +1,26 @@
+Output from cref_list_of2_speed.h for n = 1000 * 1000
+Mac OS Leopard 10.6 - x86_64 - Release mode - gcc 4.2
+
+cref_list_of(1) => 0.01 s
+
+cref_list_of<>(1) => 0.01 s
+
+cref_list_of(3) => 0.40 s
+
+cref_list_of<>(3) => 0.01 s
+
+cref_list_of(10) => 0.63 s
+
+cref_list_of<>(10) => 0.06 s
+
+cref_list_of(30) => 0.93 s
+
+cref_list_of<>(30) => 0.21 s
+
+cref_list_of(80) => 2.73 s
+
+cref_list_of<>(80) => 0.47 s
+
+cref_list_of(160) => 9.28 s
+
+cref_list_of<>(160) => 0.93 s
\ No newline at end of file
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-27 21:23:05 EST (Sat, 27 Feb 2010)
@@ -1,12 +1,12 @@
 #include <iostream>
-#include <libs/assign/example/cref_list_of2.h>
+#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/static_list_of_auto_size.h>
 
 int main (int argc, char * const argv[]) {
 
-	example_cref_list_of(std::cout);
+	example_ref_list_of(std::cout);
         test_speed(std::cout);
         test_speed_csv(std::cout);
 //	check_static_list_of_auto_size();
Added: sandbox/statistics/detail/assign/libs/assign/test/speed_common.cpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/detail/assign/libs/assign/test/speed_common.cpp	2010-02-27 21:23:05 EST (Sat, 27 Feb 2010)
@@ -0,0 +1,30 @@
+//////////////////////////////////////////////////////////////////////////////
+// test::speed_common.cpp                                                   //
+//                                                                          //
+//////////////////////////////////////////////////////////////////////////////
+#include <algorithm>
+#include <string>
+#include <libs/assign/test/speed_common.h>
+
+// This file was provided by M.P.G 
+
+// http://www.eternallyconfuzzled.com/arts/jsw_art_rand.aspx
+inline double uniform_deviate ( int seed )
+{
+    return seed * ( 1.0 / ( RAND_MAX + 1.0 ) );
+}
+inline int rand(int M, int N) // Range [M..N)
+{   
+    return int(M + uniform_deviate(std::rand()) * (N - M));
+}
+char rand_letter()
+{
+    return char(rand('a', 'z' + 1));
+}
+
+std::string rand_str(int len)
+{
+    std::string result;
+    std::generate_n(std::back_inserter(result), len, &rand_letter);
+    return result;
+}
Added: sandbox/statistics/detail/assign/libs/assign/test/speed_common.h
==============================================================================
--- (empty file)
+++ sandbox/statistics/detail/assign/libs/assign/test/speed_common.h	2010-02-27 21:23:05 EST (Sat, 27 Feb 2010)
@@ -0,0 +1,13 @@
+//////////////////////////////////////////////////////////////////////////////
+// test::speed_common.h                                                     //
+//                                                                          //
+//////////////////////////////////////////////////////////////////////////////
+#ifndef LIBS_ASSIGN_TEST_SPEED_COMMON_CSV_ER_2010_H
+#define LIBS_ASSIGN_TEST_SPEED_COMMON_CSV_ER_2010_H
+
+inline double uniform_deviate ( int seed );
+inline int rand(int M, int N);
+char rand_letter();
+std::string rand_str(int len);
+
+#endif
\ No newline at end of file
Added: sandbox/statistics/detail/assign/libs/assign/test/speed_csv.cpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/detail/assign/libs/assign/test/speed_csv.cpp	2010-02-27 21:23:05 EST (Sat, 27 Feb 2010)
@@ -0,0 +1,250 @@
+//////////////////////////////////////////////////////////////////////////////
+// test::speed_csv.cpp                                                      //
+//                                                                          //
+//////////////////////////////////////////////////////////////////////////////
+#include <iostream>
+#include <vector>
+#include <string>
+#include <algorithm>
+#include <boost/progress.hpp>
+#include <boost/bind.hpp>
+#include <boost/typeof/typeof.hpp>
+#include <libs/assign/test/speed_common.h>
+
+#define BOOST_ASSIGN_CSV_SIZE 160
+#include <boost/assign/auto_size/ref_list_of.hpp>
+#undef BOOST_ASSIGN_CSV_SIZE
+
+#include <libs/assign/test/speed.h>
+
+// This file was provided by M.P.G 
+
+void test_speed_csv(std::ostream& os)
+{
+	os << "-> test_speed_csv : " << std::endl;
+
+	typedef boost::progress_timer timer_;
+    
+    typedef std::vector<std::string> Vec;
+    
+    int const str_len = 100, // Irrelevant bec. we don't copy them
+    max_N = 200;
+    
+    const int n = 1000 * 1000;
+    int N;
+    Vec v;
+    std::generate_n(std::back_inserter(v), max_N, boost::bind(&rand_str, str_len));
+    
+    {
+        N = 1;
+        assert(N < max_N);
+        {
+            timer_ timer;
+            for(int i = 0; i < n; ++i)
+            {
+                BOOST_AUTO(rng, boost::assign::cref_list_of(v[0]));
+                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<1>(v[0]));
+                int sz = (int)rng.size();
+                if(sz != N)
+                    os << "ERROR\n";
+            }
+ 			os << "cref_list_of<>(" << N << ") => ";
+        }
+    }
+    {
+        N = 3;
+        assert(N < max_N);
+        {
+ 			timer_ timer;
+            for(int i = 0; i < n; ++i)
+            {
+                BOOST_AUTO(rng, boost::assign::cref_list_of(v[0],v[1],v[2]));
+                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>(v[0])(v[1])(v[2]));
+                int sz = (int)rng.size();
+                if(sz != N)
+                    os << "ERROR\n";
+            }
+ 			os << "cref_list_of<>(" << N << ") => ";
+        }
+    }
+    
+    {
+        N = 10;
+        assert(N < max_N);
+        {
+ 			timer_ timer;
+            for(int i = 0; i < n; ++i)
+            {
+                BOOST_AUTO(rng, boost::assign::cref_list_of(v[0],v[1],v[2],v[3],v[4],v[5],v[6],v[7],v[8],v[9]));
+                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<10>(v[0])(v[1])(v[2])(v[3])(v[4])(v[5])(v[6])(v[7])(v[8])(v[9]));
+                int sz = (int)rng.size();
+                if(sz != N)
+                    os << "ERROR\n";
+            }
+ 			os << "cref_list_of<>(" << N << ") => ";
+        }
+    }
+    
+    {
+        N = 30;
+        assert(N < max_N);
+        {
+ 			timer_ timer;
+            for(int i = 0; i < n; ++i)
+            {
+                BOOST_AUTO(rng, boost::assign::cref_list_of(v[0],v[1],v[2],v[3],v[4],v[5],v[6],v[7],v[8],v[9]
+                           ,v[10],v[11],v[12],v[13],v[14],v[15],v[16],v[17],v[18],v[19]
+                           ,v[20],v[21],v[22],v[23],v[24],v[25],v[26],v[27],v[28],v[29]));
+                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<30>(v[0])(v[1])(v[2])(v[3])(v[4])(v[5])(v[6])(v[7])(v[8])(v[9])
+                           (v[10])(v[11])(v[12])(v[13])(v[14])(v[15])(v[16])(v[17])(v[18])(v[19])
+                           (v[20])(v[21])(v[22])(v[23])(v[24])(v[25])(v[26])(v[27])(v[28])(v[29]));
+                int sz = (int)rng.size();
+                if(sz != N)
+                    os << "ERROR\n";
+            }
+ 			os << "cref_list_of<>(" << N << ") => ";
+        }
+    }    
+    
+    {
+        N = 80;
+        assert(N < max_N);
+        {
+            timer_ timer;
+            for(int i = 0; i < n; ++i)
+            {
+                BOOST_AUTO(rng, boost::assign::cref_list_of( 
+                			v[0], v[1], v[2], v[3], v[4], v[5], v[6], v[7], v[8], v[9]
+                           ,v[10],v[11],v[12],v[13],v[14],v[15],v[16],v[17],v[18],v[19]
+                           ,v[20],v[21],v[22],v[23],v[24],v[25],v[26],v[27],v[28],v[29]
+                           ,v[30],v[31],v[32],v[33],v[34],v[35],v[36],v[37],v[38],v[39]
+                           ,v[40],v[41],v[42],v[43],v[44],v[45],v[46],v[47],v[48],v[49]
+                           ,v[50],v[51],v[52],v[53],v[54],v[55],v[56],v[57],v[58],v[59]
+                           ,v[60],v[61],v[62],v[63],v[64],v[65],v[66],v[67],v[68],v[69]
+                           ,v[70],v[71],v[72],v[73],v[74],v[75],v[76],v[77],v[78],v[79]));
+                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<80>( v[0])( v[1])( v[2])( v[3])( v[4])( v[5])( v[6])( v[7])( v[8])( v[9])
+                           (v[10])(v[11])(v[12])(v[13])(v[14])(v[15])(v[16])(v[17])(v[18])(v[19])
+                           (v[20])(v[21])(v[22])(v[23])(v[24])(v[25])(v[26])(v[27])(v[28])(v[29])
+                           (v[30])(v[31])(v[32])(v[33])(v[34])(v[35])(v[36])(v[37])(v[38])(v[39])
+                           (v[40])(v[41])(v[42])(v[43])(v[44])(v[45])(v[46])(v[47])(v[48])(v[49])
+                           (v[50])(v[51])(v[52])(v[53])(v[54])(v[55])(v[56])(v[57])(v[58])(v[59])
+                           (v[60])(v[61])(v[62])(v[63])(v[64])(v[65])(v[66])(v[67])(v[68])(v[69])
+                           (v[70])(v[71])(v[72])(v[73])(v[74])(v[75])(v[76])(v[77])(v[78])(v[79]));
+                int sz = (int)rng.size();   
+                if(sz != N)
+                    os << "ERROR\n";
+            }
+ 			os << "cref_list_of<>(" << N << ") => ";
+        }
+    }  
+    
+    {
+        N = 160;
+        assert(N < max_N);
+        {
+ 			timer_ timer;
+            for(int i = 0; i < n; ++i)
+            {
+                BOOST_AUTO(rng, boost::assign::cref_list_of( 
+                			v[0], v[1], v[2], v[3], v[4], v[5], v[6], v[7], v[8], v[9]
+                           ,v[10],v[11],v[12],v[13],v[14],v[15],v[16],v[17],v[18],v[19]
+                           ,v[20],v[21],v[22],v[23],v[24],v[25],v[26],v[27],v[28],v[29]
+                           ,v[30],v[31],v[32],v[33],v[34],v[35],v[36],v[37],v[38],v[39]
+                           ,v[40],v[41],v[42],v[43],v[44],v[45],v[46],v[47],v[48],v[49]
+                           ,v[50],v[51],v[52],v[53],v[54],v[55],v[56],v[57],v[58],v[59]
+                           ,v[60],v[61],v[62],v[63],v[64],v[65],v[66],v[67],v[68],v[69]
+                           ,v[70],v[71],v[72],v[73],v[74],v[75],v[76],v[77],v[78],v[79]
+                           ,v[80],v[88],v[82],v[83],v[84],v[85],v[86],v[87],v[88],v[89]
+                           ,v[90],v[91],v[92],v[93],v[94],v[95],v[96],v[97],v[98],v[99]
+                           ,v[100],v[101],v[102],v[103],v[104],v[105],v[106],v[107],v[108],v[109]
+                           ,v[110],v[111],v[112],v[113],v[114],v[115],v[116],v[117],v[118],v[119]
+                           ,v[120],v[121],v[122],v[123],v[124],v[125],v[126],v[127],v[128],v[129]
+                           ,v[130],v[131],v[132],v[133],v[134],v[135],v[136],v[137],v[138],v[139]
+                           ,v[140],v[141],v[142],v[143],v[144],v[145],v[146],v[147],v[148],v[149]
+                           ,v[150],v[151],v[152],v[153],v[154],v[155],v[156],v[157],v[158],v[159]));
+                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<160>( v[0])( v[1])( v[2])( v[3])( v[4])( v[5])( v[6])( v[7])( v[8])( v[9])
+                           (v[10])(v[11])(v[12])(v[13])(v[14])(v[15])(v[16])(v[17])(v[18])(v[19])
+                           (v[20])(v[21])(v[22])(v[23])(v[24])(v[25])(v[26])(v[27])(v[28])(v[29])
+                           (v[30])(v[31])(v[32])(v[33])(v[34])(v[35])(v[36])(v[37])(v[38])(v[39])
+                           (v[40])(v[41])(v[42])(v[43])(v[44])(v[45])(v[46])(v[47])(v[48])(v[49])
+                           (v[50])(v[51])(v[52])(v[53])(v[54])(v[55])(v[56])(v[57])(v[58])(v[59])
+                           (v[60])(v[61])(v[62])(v[63])(v[64])(v[65])(v[66])(v[67])(v[68])(v[69])
+                           (v[70])(v[71])(v[72])(v[73])(v[74])(v[75])(v[76])(v[77])(v[78])(v[79])
+                           (v[80])(v[88])(v[82])(v[83])(v[84])(v[85])(v[86])(v[87])(v[88])(v[89])
+                           (v[90])(v[91])(v[92])(v[93])(v[94])(v[95])(v[96])(v[97])(v[98])(v[99])
+                           (v[100])(v[101])(v[102])(v[103])(v[104])(v[105])(v[106])(v[107])(v[108])(v[109])
+                           (v[110])(v[111])(v[112])(v[113])(v[114])(v[115])(v[116])(v[117])(v[118])(v[119])
+                           (v[120])(v[121])(v[122])(v[123])(v[124])(v[125])(v[126])(v[127])(v[128])(v[129])
+                           (v[130])(v[131])(v[132])(v[133])(v[134])(v[135])(v[136])(v[137])(v[138])(v[139])
+                           (v[140])(v[141])(v[142])(v[143])(v[144])(v[145])(v[146])(v[147])(v[148])(v[149])
+                           (v[150])(v[151])(v[152])(v[153])(v[154])(v[155])(v[156])(v[157])(v[158])(v[159]));
+                int sz = (int)rng.size();   
+                if(sz != N)
+                    os << "ERROR\n";
+            }
+ 			os << "cref_list_of<>(" << N << ") => ";
+        }
+    }       
+	os << "<- " << std::endl;
+    
+};
Added: sandbox/statistics/detail/assign/libs/assign/test/speed_csv.h
==============================================================================
--- (empty file)
+++ sandbox/statistics/detail/assign/libs/assign/test/speed_csv.h	2010-02-27 21:23:05 EST (Sat, 27 Feb 2010)
@@ -0,0 +1,11 @@
+//////////////////////////////////////////////////////////////////////////////
+// test::cref_copy_list_of_speed.h                                          //
+//                                                                          //
+//////////////////////////////////////////////////////////////////////////////
+#ifndef LIBS_ASSIGN_TEST_SPEED_CSV_ER_2010_H
+#define LIBS_ASSIGN_TEST_SPEED_CSV_ER_2010_H
+#include <ostream>
+
+void test_speed_csv(std::ostream&);
+
+#endif