Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r81592 - sandbox/variadic_templates/sandbox/slim/test
From: cppljevans_at_[hidden]
Date: 2012-11-27 11:28:02


Author: cppljevans
Date: 2012-11-27 11:28:01 EST (Tue, 27 Nov 2012)
New Revision: 81592
URL: http://svn.boost.org/trac/boost/changeset/81592

Log:
*.run.txt shows poor clang performance
relative to g++. Clang performance degrades
rapidly as TUPLE_SIZE and/or TREE_DEPTH increases.

Added:
   sandbox/variadic_templates/sandbox/slim/test/command_guage.py
      - copied, changed from r81377, /sandbox/variadic_templates/sandbox/slim/test/compiler_guage.py
   sandbox/variadic_templates/sandbox/slim/test/time_cmd_name_codes.py (contents, props changed)
Removed:
   sandbox/variadic_templates/sandbox/slim/test/compiler_guage.py
Text files modified:
   sandbox/variadic_templates/sandbox/slim/test/Makefile | 2
   sandbox/variadic_templates/sandbox/slim/test/command_guage.py | 39 ++++++++++------
   sandbox/variadic_templates/sandbox/slim/test/tuple.benchmark.tree_builder.guage_time._.run.txt | 93 +++++++++++++--------------------------
   sandbox/variadic_templates/sandbox/slim/test/tuple_benchmark_filt.py | 2
   sandbox/variadic_templates/sandbox/slim/test/tuple_benchmark_pickle.py | 42 +++++++++++------
   sandbox/variadic_templates/sandbox/slim/test/tuple_benchmark_run.py | 24 +++++----
   sandbox/variadic_templates/sandbox/slim/test/tuple_benchmark_tags.py | 1
   7 files changed, 97 insertions(+), 106 deletions(-)

Modified: sandbox/variadic_templates/sandbox/slim/test/Makefile
==============================================================================
--- sandbox/variadic_templates/sandbox/slim/test/Makefile (original)
+++ sandbox/variadic_templates/sandbox/slim/test/Makefile 2012-11-27 11:28:01 EST (Tue, 27 Nov 2012)
@@ -26,7 +26,7 @@
 
 %.$(OUT_SUFFIX).$(RUN_EXT): %.$(SRC_EXT) $(DOM_PY) $(RUN_PY)
         #runs compiler on $<, recording preformance in $@
- $(PYTHON) tuple_benchmark_run.py $(BENCHMARK.suffix) $(GUAGE) $(RUN_ID)
+ $(PYTHON) tuple_benchmark_run.py $(BENCHMARK.suffix) $(RUN_ID) $(GUAGE)
 
 .PHONY: domain
 domain: #prints the domains(inputs) used in $(RUN_FILENAME) target.

Copied: sandbox/variadic_templates/sandbox/slim/test/command_guage.py (from r81377, /sandbox/variadic_templates/sandbox/slim/test/compiler_guage.py)
==============================================================================
--- /sandbox/variadic_templates/sandbox/slim/test/compiler_guage.py (original)
+++ sandbox/variadic_templates/sandbox/slim/test/command_guage.py 2012-11-27 11:28:01 EST (Tue, 27 Nov 2012)
@@ -1,12 +1,12 @@
 """
-Classes for measuring the performance of a compiler
+Classes for measuring the performance of a command
 """
 import abc
 import subprocess
 
 class guage_abstract:
     """
- Abstract class for measuring compiler performance.
+ Abstract class for measuring command performance.
     """
     __metaclass__=abc.ABCMeta
 
@@ -18,27 +18,35 @@
         pass
 
     @abc.abstractmethod
- def measure(self,compiler_exe, compiler_args, measure_out):
+ def measure(self,command_exe, command_args, measure_out):
         """
         Measure the performance of
- compiler, compiler_exe,
- with args, compiler_args,
+ command, command_exe,
+ with args, command_args,
           while appending the measurements on file, measure_out.
         """
         pass
 
+import time_cmd_name_codes
+
 class guage_time(guage_abstract):
     """
     Concrete class using system time function for measuring performance.
     """
 
- def names():
- return ["user","system","elapsed"]
-
- def measure(self, compiler_exe, compiler_args, measure_out):
- compile_cmd=compiler_exe+compiler_args
- time_format='"user:%U system:%S elapsed:%e"'
- measure_cmd='time --format '+time_format+' '+compile_cmd
+ def __init__( self, measured=time_cmd_name_codes.lst_names()):
+ self.measured=measured
+ self.format=reduce\
+ ( lambda fmt,name: fmt+name+"["+time_cmd_name_codes.fmtcode(name)+"]"
+ , measured
+ , ""
+ )
+ def names(self):
+ return self.measured
+
+ def measure(self, command_exe, command_args, measure_out):
+ compile_cmd=command_exe+command_args
+ measure_cmd='time --format '+self.format+' '+compile_cmd
         print(":measure_cmd=",measure_cmd)
         if True:
           rc=subprocess.call(
@@ -53,14 +61,15 @@
 
 class guage_ftime(guage_abstract):
     """
- Concrete class using -ftime-report compiler flag for measuring performance.
+ Concrete class using -ftime-report command flag for measuring performance.
+ This, of course, requires the command to take the -ftime-report flag.
     """
 
     def names():
         return []
 
- def measure(self, compiler_exe, compiler_args, measure_out):
- measure_cmd=compiler_exe+" -ftime-report "+compiler_args
+ def measure(self, command_exe, command_args, measure_out):
+ measure_cmd=command_exe+" -ftime-report "+command_args
         print(":measure_cmd=",measure_cmd)
         if True:
           rc=subprocess.call(

Deleted: sandbox/variadic_templates/sandbox/slim/test/compiler_guage.py
==============================================================================
--- sandbox/variadic_templates/sandbox/slim/test/compiler_guage.py 2012-11-27 11:28:01 EST (Tue, 27 Nov 2012)
+++ (empty file)
@@ -1,74 +0,0 @@
-"""
-Classes for measuring the performance of a compiler
-"""
-import abc
-import subprocess
-
-class guage_abstract:
- """
- Abstract class for measuring compiler performance.
- """
- __metaclass__=abc.ABCMeta
-
- @abc.abstractmethod
- def names():
- """
- Names of performances measured by method, measure.
- """
- pass
-
- @abc.abstractmethod
- def measure(self,compiler_exe, compiler_args, measure_out):
- """
- Measure the performance of
- compiler, compiler_exe,
- with args, compiler_args,
- while appending the measurements on file, measure_out.
- """
- pass
-
-class guage_time(guage_abstract):
- """
- Concrete class using system time function for measuring performance.
- """
-
- def names():
- return ["user","system","elapsed"]
-
- def measure(self, compiler_exe, compiler_args, measure_out):
- compile_cmd=compiler_exe+compiler_args
- time_format='"user:%U system:%S elapsed:%e"'
- measure_cmd='time --format '+time_format+' '+compile_cmd
- print(":measure_cmd=",measure_cmd)
- if True:
- rc=subprocess.call(
- measure_cmd
- , shell=True
- , stdout=measure_out
- , stderr=subprocess.STDOUT
- )
- print(":rc=",rc)
- return rc
- return 0
-
-class guage_ftime(guage_abstract):
- """
- Concrete class using -ftime-report compiler flag for measuring performance.
- """
-
- def names():
- return []
-
- def measure(self, compiler_exe, compiler_args, measure_out):
- measure_cmd=compiler_exe+" -ftime-report "+compiler_args
- print(":measure_cmd=",measure_cmd)
- if True:
- rc=subprocess.call(
- measure_cmd
- , shell=True
- , stdout=measure_out
- , stderr=subprocess.STDOUT
- )
- print(":rc=",rc)
- return rc
- return 0

Added: sandbox/variadic_templates/sandbox/slim/test/time_cmd_name_codes.py
==============================================================================
--- (empty file)
+++ sandbox/variadic_templates/sandbox/slim/test/time_cmd_name_codes.py 2012-11-27 11:28:01 EST (Tue, 27 Nov 2012)
@@ -0,0 +1,30 @@
+"""
+Map from names to format codes of system time command.
+"""
+from __future__ import print_function
+
+#mapping of name of measurement to format code for measurement
+#in --format argument to system time command.
+TUPLE_NAME_CODES=\
+ ( ('UserTime','%U')
+ , ('SystemTime','%S')
+ , ('ElapsedTime','%e')
+ , ('MajorPageFaults', '%I')
+ , ('MaxResidentSetSize', '%M')
+ , ('Swaps', '%W')
+ , ('ContextSwitches', '%w')
+ )
+
+DICT_NAME_CODE=dict(TUPLE_NAME_CODES)
+
+def lst_names():
+ """the names in TUPLE_NAME_CODES"""
+ return map(lambda (name,code):name,TUPLE_NAME_CODES)
+
+def fmtcode(name):
+ """the format code for name"""
+ return DICT_NAME_CODE[name]
+
+if __name__ == '__main__':
+ print(":DICT_NAME_CODE=",DICT_NAME_CODE)
+ print(":names=",lst_names())

Modified: sandbox/variadic_templates/sandbox/slim/test/tuple.benchmark.tree_builder.guage_time._.run.txt
==============================================================================
--- sandbox/variadic_templates/sandbox/slim/test/tuple.benchmark.tree_builder.guage_time._.run.txt (original)
+++ sandbox/variadic_templates/sandbox/slim/test/tuple.benchmark.tree_builder.guage_time._.run.txt 2012-11-27 11:28:01 EST (Tue, 27 Nov 2012)
@@ -18,99 +18,68 @@
 ]version
 ]compilers
 domain_names['compiler', 'TUPLE_IMPL', 'TUPLE_SIZE', 'TUPLE_UNROLL_MAX', 'TREE_DEPTH']domain_names
-domain_values['gcc4_8', 'bcon12_horizontal', 10, -1, 2]domain_values
-range_out[
-user:0.77 system:0.07 elapsed:0.97
-]range_out
-domain_values['gcc4_8', 'bcon12_horizontal', 10, -1, 3]domain_values
-range_out[
-user:0.79 system:0.18 elapsed:0.95
-]range_out
+range_how['guage_time', 'UserTime', 'SystemTime', 'ElapsedTime', 'MajorPageFaults', 'MaxResidentSetSize', 'Swaps', 'ContextSwitches']range_how
 domain_values['gcc4_8', 'bcon12_horizontal', 10, -1, 4]domain_values
 range_out[
-user:0.97 system:0.13 elapsed:1.08
-]range_out
-domain_values['gcc4_8', 'bcon12_horizontal', 15, -1, 2]domain_values
-range_out[
-user:0.82 system:0.09 elapsed:0.89
-]range_out
-domain_values['gcc4_8', 'bcon12_horizontal', 15, -1, 3]domain_values
-range_out[
-user:1.10 system:0.09 elapsed:1.17
-]range_out
-domain_values['gcc4_8', 'bcon12_horizontal', 15, -1, 4]domain_values
-range_out[
-user:1.31 system:0.15 elapsed:1.44
-]range_out
-domain_values['gcc4_8', 'bcon12_vertical', 10, 10, 2]domain_values
-range_out[
-user:0.62 system:0.09 elapsed:0.69
+UserTime[1.29]SystemTime[0.23]ElapsedTime[3.67]MajorPageFaults[32112]MaxResidentSetSize[241856]Swaps[0]ContextSwitches[381]
 ]range_out
-domain_values['gcc4_8', 'bcon12_vertical', 10, 10, 3]domain_values
+domain_values['gcc4_8', 'bcon12_horizontal', 10, -1, 5]domain_values
 range_out[
-user:0.65 system:0.13 elapsed:0.76
+UserTime[1.21]SystemTime[0.12]ElapsedTime[1.35]MajorPageFaults[8]MaxResidentSetSize[268256]Swaps[0]ContextSwitches[6]
 ]range_out
-domain_values['gcc4_8', 'bcon12_vertical', 10, 10, 4]domain_values
+domain_values['gcc4_8', 'bcon12_horizontal', 10, -1, 6]domain_values
 range_out[
-user:0.72 system:0.14 elapsed:0.83
+UserTime[1.35]SystemTime[0.11]ElapsedTime[1.55]MajorPageFaults[56]MaxResidentSetSize[295232]Swaps[0]ContextSwitches[12]
 ]range_out
-domain_values['gcc4_8', 'bcon12_vertical', 15, 10, 2]domain_values
+domain_values['gcc4_8', 'bcon12_horizontal', 10, -1, 7]domain_values
 range_out[
-user:0.78 system:0.05 elapsed:0.81
+UserTime[1.58]SystemTime[0.18]ElapsedTime[1.89]MajorPageFaults[200]MaxResidentSetSize[322864]Swaps[0]ContextSwitches[12]
 ]range_out
-domain_values['gcc4_8', 'bcon12_vertical', 15, 10, 3]domain_values
+domain_values['gcc4_8', 'bcon12_horizontal', 15, -1, 4]domain_values
 range_out[
-user:0.83 system:0.14 elapsed:0.95
+UserTime[1.33]SystemTime[0.15]ElapsedTime[1.46]MajorPageFaults[0]MaxResidentSetSize[295968]Swaps[0]ContextSwitches[5]
 ]range_out
-domain_values['gcc4_8', 'bcon12_vertical', 15, 10, 4]domain_values
+domain_values['gcc4_8', 'bcon12_horizontal', 15, -1, 5]domain_values
 range_out[
-user:0.94 system:0.15 elapsed:1.07
+UserTime[1.56]SystemTime[0.20]ElapsedTime[1.76]MajorPageFaults[48]MaxResidentSetSize[336928]Swaps[0]ContextSwitches[6]
 ]range_out
-domain_values['clangxx', 'bcon12_horizontal', 10, -1, 2]domain_values
+domain_values['gcc4_8', 'bcon12_horizontal', 15, -1, 6]domain_values
 range_out[
-user:0.51 system:0.07 elapsed:0.57
+UserTime[1.96]SystemTime[0.18]ElapsedTime[2.15]MajorPageFaults[0]MaxResidentSetSize[378496]Swaps[0]ContextSwitches[56]
 ]range_out
-domain_values['clangxx', 'bcon12_horizontal', 10, -1, 3]domain_values
+domain_values['gcc4_8', 'bcon12_horizontal', 15, -1, 7]domain_values
 range_out[
-user:0.59 system:0.06 elapsed:0.64
+UserTime[2.34]SystemTime[0.18]ElapsedTime[2.64]MajorPageFaults[32]MaxResidentSetSize[421168]Swaps[0]ContextSwitches[7]
 ]range_out
 domain_values['clangxx', 'bcon12_horizontal', 10, -1, 4]domain_values
 range_out[
-user:0.78 system:0.09 elapsed:0.86
-]range_out
-domain_values['clangxx', 'bcon12_horizontal', 15, -1, 2]domain_values
-range_out[
-user:0.57 system:0.07 elapsed:0.63
+UserTime[1.13]SystemTime[0.11]ElapsedTime[2.72]MajorPageFaults[27608]MaxResidentSetSize[146608]Swaps[0]ContextSwitches[228]
 ]range_out
-domain_values['clangxx', 'bcon12_horizontal', 15, -1, 3]domain_values
+domain_values['clangxx', 'bcon12_horizontal', 10, -1, 5]domain_values
 range_out[
-user:0.77 system:0.03 elapsed:0.79
+UserTime[2.48]SystemTime[0.05]ElapsedTime[2.53]MajorPageFaults[0]MaxResidentSetSize[159296]Swaps[0]ContextSwitches[4]
 ]range_out
-domain_values['clangxx', 'bcon12_horizontal', 15, -1, 4]domain_values
+domain_values['clangxx', 'bcon12_horizontal', 10, -1, 6]domain_values
 range_out[
-user:1.55 system:0.08 elapsed:1.61
+UserTime[16.85]SystemTime[0.08]ElapsedTime[17.36]MajorPageFaults[0]MaxResidentSetSize[170368]Swaps[0]ContextSwitches[3]
 ]range_out
-domain_values['clangxx', 'bcon12_vertical', 10, 10, 2]domain_values
+domain_values['clangxx', 'bcon12_horizontal', 10, -1, 7]domain_values
 range_out[
-user:0.53 system:0.04 elapsed:0.56
+UserTime[160.33]SystemTime[0.27]ElapsedTime[160.60]MajorPageFaults[0]MaxResidentSetSize[182624]Swaps[0]ContextSwitches[3]
 ]range_out
-domain_values['clangxx', 'bcon12_vertical', 10, 10, 3]domain_values
-range_out[
-user:0.52 system:0.08 elapsed:0.59
-]range_out
-domain_values['clangxx', 'bcon12_vertical', 10, 10, 4]domain_values
+domain_values['clangxx', 'bcon12_horizontal', 15, -1, 4]domain_values
 range_out[
-user:0.59 system:0.05 elapsed:0.63
+UserTime[1.58]SystemTime[0.05]ElapsedTime[1.62]MajorPageFaults[0]MaxResidentSetSize[169664]Swaps[0]ContextSwitches[4]
 ]range_out
-domain_values['clangxx', 'bcon12_vertical', 15, 10, 2]domain_values
+domain_values['clangxx', 'bcon12_horizontal', 15, -1, 5]domain_values
 range_out[
-user:1.16 system:0.03 elapsed:1.18
+UserTime[12.53]SystemTime[0.06]ElapsedTime[12.58]MajorPageFaults[0]MaxResidentSetSize[187472]Swaps[0]ContextSwitches[3]
 ]range_out
-domain_values['clangxx', 'bcon12_vertical', 15, 10, 3]domain_values
+domain_values['clangxx', 'bcon12_horizontal', 15, -1, 6]domain_values
 range_out[
-user:10.55 system:0.17 elapsed:10.72
+UserTime[173.84]SystemTime[0.30]ElapsedTime[174.20]MajorPageFaults[24]MaxResidentSetSize[207792]Swaps[0]ContextSwitches[6]
 ]range_out
-domain_values['clangxx', 'bcon12_vertical', 15, 10, 4]domain_values
+domain_values['clangxx', 'bcon12_horizontal', 15, -1, 7]domain_values
 range_out[
-user:158.27 system:2.15 elapsed:160.45
+UserTime[2592.81]SystemTime[0.63]ElapsedTime[2593.48]MajorPageFaults[0]MaxResidentSetSize[229648]Swaps[0]ContextSwitches[3]
 ]range_out

Modified: sandbox/variadic_templates/sandbox/slim/test/tuple_benchmark_filt.py
==============================================================================
--- sandbox/variadic_templates/sandbox/slim/test/tuple_benchmark_filt.py (original)
+++ sandbox/variadic_templates/sandbox/slim/test/tuple_benchmark_filt.py 2012-11-27 11:28:01 EST (Tue, 27 Nov 2012)
@@ -28,7 +28,7 @@
       : ( d_lst[d_ndx.compiler] == 'gcc4_8'
           or d_lst[d_ndx.compiler] == 'clangxx'
           )
- and d_lst[d_ndx.TUPLE_SIZE] == 15
+ and d_lst[d_ndx.TUPLE_SIZE] == 10
     , domain_range_values
     )
   print(":filt_dr=")

Modified: sandbox/variadic_templates/sandbox/slim/test/tuple_benchmark_pickle.py
==============================================================================
--- sandbox/variadic_templates/sandbox/slim/test/tuple_benchmark_pickle.py (original)
+++ sandbox/variadic_templates/sandbox/slim/test/tuple_benchmark_pickle.py 2012-11-27 11:28:01 EST (Tue, 27 Nov 2012)
@@ -23,7 +23,7 @@
     def parse(range_str):
       """
       range_str is a string output from compiler performance measurement.
- This method turns that into a list or range values
+ This method turns that into a list of range values
       which are then returned.
       """
       pass
@@ -34,16 +34,9 @@
     made with system time command.
     """
 
- def __init__(self):
- self.range_names=['user','system','elapsed']
- range_values_pat\
- ="^"\
- +self.range_names[0]\
- +":(.*) "\
- +self.range_names[1]\
- +":(.*) "\
- +self.range_names[2]\
- +":(.*)$"
+ def __init__(self,names):
+ self.range_names=names
+ range_values_pat=reduce(lambda pat,name: pat+name+"\[(.*)\]",names,"^")+"$"
         self.range_values_re=re.compile(range_values_pat)
 
     def names(self):
@@ -77,19 +70,36 @@
       break
   line_str=run_file_inp.next()
   line_count+=1
- domain_names_re=re.compile("^"+TAG_TUPLE.domain_names+"(\[.*\])"+TAG_TUPLE.domain_names+"$")
+ domain_names_pat="^"+TAG_TUPLE.domain_names+"(\[.*\])"+TAG_TUPLE.domain_names+"$"
+ domain_names_re=re.compile(domain_names_pat)
   found=domain_names_re.search(line_str)
   if debug_print:
     print(":line[",line_count,"]=",line_str,sep="",end="")
     print(":found=",found)
   if not found:
- print("*** on line",line_count,"expected '"+TAG_TUPLE.domain_names+"' but found:"+line_str)
+ print("*** on line",line_count,"expected '"+domain_names_pat+"' but found:"+line_str)
     return 1
   domain_names_lst=eval(found.group(1))
- range_parser=parse_range_time()
   print(":domain_names_lst=",domain_names_lst)
- range_names_lst=range_parser.names()
+ line_str=run_file_inp.next()
+ line_count+=1
+ range_how_pat="^"+TAG_TUPLE.range_how+"(\[.*\])"+TAG_TUPLE.range_how+"$"
+ range_how_re=re.compile(range_how_pat)
+ found=range_how_re.search(line_str)
+ if debug_print:
+ print(":line[",line_count,"]=",line_str,sep="",end="")
+ print(":found=",found)
+ if not found:
+ print("*** on line",line_count,"expected '"+range_how_pat+"' but found:"+line_str)
+ return 1
+ range_how_lst=eval(found.group(1))
+ range_how_ok="guage_time"
+ if range_how_lst[0] != range_how_ok:
+ print("*** on line",line_count,"found range_how=",range_how_lst[0],".")
+ print(" However, can only pickle when range_how=",range_how_ok,".")
+ range_names_lst=range_how_lst[1:]
   print(":range_names_lst=",range_names_lst)
+ range_parser=parse_range_time(range_names_lst)
   end_range=re.compile(".*]"+TAG_TUPLE.range_out+"$")
   domain_values_pat="^"+TAG_TUPLE.domain_values+"(\[.*\])"+TAG_TUPLE.domain_values
   domain_values_re=re.compile(domain_values_pat)
@@ -101,7 +111,7 @@
       print(":line[",line_count,"]=",line_str,sep="",end="")
     found=domain_values_re.search(line_str)
     if not found:
- print("*** on line",line_count,"expected '"+TAG_TUPLE.domain_values+"' but found:"+line_str)
+ print("*** on line",line_count,"expected '"+domain_values_pat+"' but found:"+line_str)
       return 1
     domain_values_lst=eval(found.group(1))#list_of(domain_values)
     line_str=run_file_inp.next()#should be 'range_out['

Modified: sandbox/variadic_templates/sandbox/slim/test/tuple_benchmark_run.py
==============================================================================
--- sandbox/variadic_templates/sandbox/slim/test/tuple_benchmark_run.py (original)
+++ sandbox/variadic_templates/sandbox/slim/test/tuple_benchmark_run.py 2012-11-27 11:28:01 EST (Tue, 27 Nov 2012)
@@ -10,7 +10,7 @@
 import subprocess
 
 from tuple_benchmark_domain import *
-import compiler_guage
+import command_guage
 import tuple_benchmark_filenames
 import boost_root
 
@@ -37,10 +37,10 @@
     benchmark_suffix=argv[iarg]
   iarg+=1
   if len(argv)>=iarg:
- guage_name=argv[iarg]
+ benchmark_run=argv[iarg]
   iarg+=1
   if len(argv)>=iarg:
- benchmark_run=argv[iarg]
+ guage_spec=argv[iarg:]
   src_filename=tuple_benchmark_filenames.src_filename(benchmark_suffix)
   #print("src_filename=",src_filename)
   boost_root_path=boost_root.path()
@@ -57,7 +57,7 @@
     impl_map_inc["bcon12_horizontal"]=\
         ""\
       #
- if True:
+ if False:
     impl_map_inc["bcon12_vertical"]=\
         " -I"+boost_root_path\
       #
@@ -79,18 +79,19 @@
     , [ 'TUPLE_SIZE', sizes(range(tuple_min_size,tuple_max_size+1,tuple_del_size))]
     , [ 'TUPLE_UNROLL_MAX', unroll_max()]
     ]
- guage_map=\
- { 'guage_time':compiler_guage.guage_time()
- , 'guage_ftime':compiler_guage.guage_ftime()
- }
   if benchmark_suffix == "mini" :
     name_domain.append( [ 'LAST_LESS', last(4,tuple_del_size)])
   else:
- name_domain.append( [ 'TREE_DEPTH', tree_depth(2,4,1)])
+ name_domain.append( [ 'TREE_DEPTH', tree_depth(4,7,1)])
   domains=product_dep(
     map(lambda t: t[1], name_domain)
     )
- guage_fun=guage_map[guage_name]
+ guage_class='command_guage.'+guage_spec[0]
+ guage_args=reduce(lambda args,arg:args+", "+arg, guage_spec[1:], "")
+ guage_args='('+guage_args[1:]+')'
+ guage_eval=guage_class+guage_args
+ guage_obj=eval(guage_eval)
+ guage_how=[guage_spec[0]]+guage_obj.names()
   run_fileobj=\
     open\
     ( tuple_benchmark_filenames.out_filename\
@@ -121,6 +122,7 @@
   print(TAG_TUPLE.domain_names
     , domain_names,sep="", end=TAG_TUPLE.domain_names+"\n"
     , file=run_fileobj)
+ print(TAG_TUPLE.range_how,guage_how,TAG_TUPLE.range_how,sep="",file=run_fileobj)
   macro_names=domain_names[1:]
   for element in domains():
       print(TAG_TUPLE.domain_values
@@ -143,7 +145,7 @@
         #
       print(TAG_TUPLE.range_out+"[",file=run_fileobj)
       run_fileobj.flush()
- run_rc=guage_fun.measure(compiler_exe, compiler_args, run_fileobj)
+ run_rc=guage_obj.measure(compiler_exe, compiler_args, run_fileobj)
       print("]"+TAG_TUPLE.range_out,file=run_fileobj)
       if run_rc != 0:
         return run_rc

Modified: sandbox/variadic_templates/sandbox/slim/test/tuple_benchmark_tags.py
==============================================================================
--- sandbox/variadic_templates/sandbox/slim/test/tuple_benchmark_tags.py (original)
+++ sandbox/variadic_templates/sandbox/slim/test/tuple_benchmark_tags.py 2012-11-27 11:28:01 EST (Tue, 27 Nov 2012)
@@ -7,6 +7,7 @@
   , 'version'
   , 'domain_names'
   , 'domain_values'
+ , 'range_how'
   , 'range_out'
   ]
 tag_tuple=namedtuple\


Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk