$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
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\