[Lldb-commits] [lldb] r142598 - in /lldb/trunk/test: benchmarks/disassembly/TestDisassembly.py benchmarks/disassembly/TestFlintVsSlateGDBDisassembly.py benchmarks/example/TestRepeatedExprs.py benchmarks/stepping/TestRunHooksThenSteppings.py benchmarks/stepping/TestSteppingSpeed.py dotest.py

Johnny Chen johnny.chen at apple.com
Thu Oct 20 11:43:28 PDT 2011


Author: johnny
Date: Thu Oct 20 13:43:28 2011
New Revision: 142598

URL: http://llvm.org/viewvc/llvm-project?rev=142598&view=rev
Log:
Parameterize the iteration count used when running benchmarks, instead of hard-coded inside the test case.
Add a '-y count' option to the test driver for this purpose.  An example:

 $  ./dotest.py -v -y 25 +b -p TestDisassembly.py

...

----------------------------------------------------------------------
Collected 2 tests

1: test_run_gdb_then_lldb (TestDisassembly.DisassembleDriverMainLoop)
   Test disassembly on a large function with lldb vs. gdb. ... 
gdb benchmark: Avg: 0.226305 (Laps: 25, Total Elapsed Time: 5.657614)
lldb benchmark: Avg: 0.113864 (Laps: 25, Total Elapsed Time: 2.846606)
lldb_avg/gdb_avg: 0.503146
ok
2: test_run_lldb_then_gdb (TestDisassembly.DisassembleDriverMainLoop)
   Test disassembly on a large function with lldb vs. gdb. ... 
lldb benchmark: Avg: 0.113008 (Laps: 25, Total Elapsed Time: 2.825201)
gdb benchmark: Avg: 0.225240 (Laps: 25, Total Elapsed Time: 5.631001)
lldb_avg/gdb_avg: 0.501723
ok

----------------------------------------------------------------------
Ran 2 tests in 41.346s

OK

Modified:
    lldb/trunk/test/benchmarks/disassembly/TestDisassembly.py
    lldb/trunk/test/benchmarks/disassembly/TestFlintVsSlateGDBDisassembly.py
    lldb/trunk/test/benchmarks/example/TestRepeatedExprs.py
    lldb/trunk/test/benchmarks/stepping/TestRunHooksThenSteppings.py
    lldb/trunk/test/benchmarks/stepping/TestSteppingSpeed.py
    lldb/trunk/test/dotest.py

Modified: lldb/trunk/test/benchmarks/disassembly/TestDisassembly.py
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/test/benchmarks/disassembly/TestDisassembly.py?rev=142598&r1=142597&r2=142598&view=diff
==============================================================================
--- lldb/trunk/test/benchmarks/disassembly/TestDisassembly.py (original)
+++ lldb/trunk/test/benchmarks/disassembly/TestDisassembly.py Thu Oct 20 13:43:28 2011
@@ -16,14 +16,17 @@
         self.function = 'Driver::MainLoop()'
         self.lldb_avg = None
         self.gdb_avg = None
+        self.count = lldb.bmIterationCount
+        if self.count <= 0:
+            self.count = 5
 
     @benchmarks_test
     def test_run_lldb_then_gdb(self):
         """Test disassembly on a large function with lldb vs. gdb."""
         print
-        self.run_lldb_disassembly(self.exe, self.function, 5)
+        self.run_lldb_disassembly(self.exe, self.function, self.count)
         print "lldb benchmark:", self.stopwatch
-        self.run_gdb_disassembly(self.exe, self.function, 5)
+        self.run_gdb_disassembly(self.exe, self.function, self.count)
         print "gdb benchmark:", self.stopwatch
         print "lldb_avg/gdb_avg: %f" % (self.lldb_avg/self.gdb_avg)
 
@@ -31,9 +34,9 @@
     def test_run_gdb_then_lldb(self):
         """Test disassembly on a large function with lldb vs. gdb."""
         print
-        self.run_gdb_disassembly(self.exe, self.function, 5)
+        self.run_gdb_disassembly(self.exe, self.function, self.count)
         print "gdb benchmark:", self.stopwatch
-        self.run_lldb_disassembly(self.exe, self.function, 5)
+        self.run_lldb_disassembly(self.exe, self.function, self.count)
         print "lldb benchmark:", self.stopwatch
         print "lldb_avg/gdb_avg: %f" % (self.lldb_avg/self.gdb_avg)
 

Modified: lldb/trunk/test/benchmarks/disassembly/TestFlintVsSlateGDBDisassembly.py
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/test/benchmarks/disassembly/TestFlintVsSlateGDBDisassembly.py?rev=142598&r1=142597&r2=142598&view=diff
==============================================================================
--- lldb/trunk/test/benchmarks/disassembly/TestFlintVsSlateGDBDisassembly.py (original)
+++ lldb/trunk/test/benchmarks/disassembly/TestFlintVsSlateGDBDisassembly.py Thu Oct 20 13:43:28 2011
@@ -18,15 +18,18 @@
         self.function = 'Driver::MainLoop()'
         self.gdb_41_avg = None
         self.gdb_42_avg = None
+        self.count = lldb.bmIterationCount
+        if self.count <= 0:
+            self.count = 5
 
     @benchmarks_test
     def test_run_41_then_42(self):
         """Test disassembly on a large function with 4.1 vs. 4.2's gdb."""
         print
-        self.run_gdb_disassembly(self.gdb_41_exe, self.exe, self.function, 5)
+        self.run_gdb_disassembly(self.gdb_41_exe, self.exe, self.function, self.count)
         print "4.1 gdb benchmark:", self.stopwatch
         self.gdb_41_avg = self.stopwatch.avg()
-        self.run_gdb_disassembly(self.gdb_42_exe, self.exe, self.function, 5)
+        self.run_gdb_disassembly(self.gdb_42_exe, self.exe, self.function, self.count)
         print "4.2 gdb benchmark:", self.stopwatch
         self.gdb_42_avg = self.stopwatch.avg()
         print "gdb_42_avg/gdb_41_avg: %f" % (self.gdb_42_avg/self.gdb_41_avg)
@@ -35,10 +38,10 @@
     def test_run_42_then_41(self):
         """Test disassembly on a large function with 4.1 vs. 4.2's gdb."""
         print
-        self.run_gdb_disassembly(self.gdb_42_exe, self.exe, self.function, 5)
+        self.run_gdb_disassembly(self.gdb_42_exe, self.exe, self.function, self.count)
         print "4.2 gdb benchmark:", self.stopwatch
         self.gdb_42_avg = self.stopwatch.avg()
-        self.run_gdb_disassembly(self.gdb_41_exe, self.exe, self.function, 5)
+        self.run_gdb_disassembly(self.gdb_41_exe, self.exe, self.function, self.count)
         print "4.1 gdb benchmark:", self.stopwatch
         self.gdb_41_avg = self.stopwatch.avg()
         print "gdb_42_avg/gdb_41_avg: %f" % (self.gdb_42_avg/self.gdb_41_avg)

Modified: lldb/trunk/test/benchmarks/example/TestRepeatedExprs.py
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/test/benchmarks/example/TestRepeatedExprs.py?rev=142598&r1=142597&r2=142598&view=diff
==============================================================================
--- lldb/trunk/test/benchmarks/example/TestRepeatedExprs.py (original)
+++ lldb/trunk/test/benchmarks/example/TestRepeatedExprs.py Thu Oct 20 13:43:28 2011
@@ -16,6 +16,9 @@
         self.line_to_break = line_number(self.source, '// Set breakpoint here.')
         self.lldb_avg = None
         self.gdb_avg = None
+        self.count = lldb.bmIterationCount
+        if self.count <= 0:
+            self.count = 100
 
     @benchmarks_test
     def test_compare_lldb_to_gdb(self):
@@ -24,9 +27,9 @@
         self.exe_name = 'a.out'
 
         print
-        self.run_lldb_repeated_exprs(self.exe_name, 100)
+        self.run_lldb_repeated_exprs(self.exe_name, self.count)
         print "lldb benchmark:", self.stopwatch
-        self.run_gdb_repeated_exprs(self.exe_name, 100)
+        self.run_gdb_repeated_exprs(self.exe_name, self.count)
         print "gdb benchmark:", self.stopwatch
         print "lldb_avg/gdb_avg: %f" % (self.lldb_avg/self.gdb_avg)
 

Modified: lldb/trunk/test/benchmarks/stepping/TestRunHooksThenSteppings.py
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/test/benchmarks/stepping/TestRunHooksThenSteppings.py?rev=142598&r1=142597&r2=142598&view=diff
==============================================================================
--- lldb/trunk/test/benchmarks/stepping/TestRunHooksThenSteppings.py (original)
+++ lldb/trunk/test/benchmarks/stepping/TestRunHooksThenSteppings.py Thu Oct 20 13:43:28 2011
@@ -12,12 +12,15 @@
 
     def setUp(self):
         BenchBase.setUp(self)
+        self.count = lldb.bmIterationCount
+        if self.count <= 0:
+            self.count = 50
 
     @benchmarks_test
     def test_lldb_runhooks_then_steppings(self):
         """Test lldb steppings on a large executable."""
         print
-        self.run_lldb_runhooks_then_steppings(50)
+        self.run_lldb_runhooks_then_steppings(self.count)
         print "lldb stepping benchmark:", self.stopwatch
 
     def run_lldb_runhooks_then_steppings(self, count):

Modified: lldb/trunk/test/benchmarks/stepping/TestSteppingSpeed.py
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/test/benchmarks/stepping/TestSteppingSpeed.py?rev=142598&r1=142597&r2=142598&view=diff
==============================================================================
--- lldb/trunk/test/benchmarks/stepping/TestSteppingSpeed.py (original)
+++ lldb/trunk/test/benchmarks/stepping/TestSteppingSpeed.py Thu Oct 20 13:43:28 2011
@@ -26,6 +26,10 @@
             else:
                 self.break_spec = '-n main'
 
+        self.count = lldb.bmIterationCount
+        if self.count <= 0:
+            self.count = 50
+
         #print "self.exe=%s" % self.exe
         #print "self.break_spec=%s" % self.break_spec
 
@@ -33,7 +37,7 @@
     def test_run_lldb_steppings(self):
         """Test lldb steppings on a large executable."""
         print
-        self.run_lldb_steppings(self.exe, self.break_spec, 50)
+        self.run_lldb_steppings(self.exe, self.break_spec, self.count)
         print "lldb stepping benchmark:", self.stopwatch
 
     def run_lldb_steppings(self, exe, break_spec, count):

Modified: lldb/trunk/test/dotest.py
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/test/dotest.py?rev=142598&r1=142597&r2=142598&view=diff
==============================================================================
--- lldb/trunk/test/dotest.py (original)
+++ lldb/trunk/test/dotest.py Thu Oct 20 13:43:28 2011
@@ -107,6 +107,8 @@
 bmExecutable = None
 # The breakpoint specification of bmExecutable, as specified by the '-x' option.
 bmBreakpointSpec = None
+# The benchamrk iteration count, as specified by the '-y' option.
+bmIterationCount = -1
 
 # By default, failfast is False.  Use '-F' to overwrite it.
 failfast = False
@@ -210,6 +212,9 @@
 -v   : do verbose mode of unittest framework (print out each test case invocation)
 -x   : specify the breakpoint specification for the benchmark executable;
        see also '-e', which provides the full path of the executable
+-y   : specify the iteration count used to collect our benchmarks; an example is
+       the number of times to do 'thread step-over' to measure stepping speed
+       see also '-e' and '-x' options
 -w   : insert some wait time (currently 0.5 sec) between consecutive test cases
 -#   : Repeat the test suite for a specified number of times
 
@@ -321,6 +326,7 @@
     global dumpSysPath
     global bmExecutable
     global bmBreakpointSpec
+    global bmIterationCount
     global failfast
     global filters
     global fs4all
@@ -478,6 +484,13 @@
                 usage()
             bmBreakpointSpec = sys.argv[index]
             index += 1
+        elif sys.argv[index].startswith('-y'):
+            # Increment by 1 to fetch the the benchmark iteration count.
+            index += 1
+            if index >= len(sys.argv) or sys.argv[index].startswith('-'):
+                usage()
+            bmIterationCount = int(sys.argv[index])
+            index += 1
         elif sys.argv[index].startswith('-#'):
             # Increment by 1 to fetch the repeat count argument.
             index += 1
@@ -902,9 +915,10 @@
 lldb.just_do_python_api_test = just_do_python_api_test
 lldb.just_do_benchmarks_test = just_do_benchmarks_test
 
-# Put bmExecutable and bmBreakpointSpec into the lldb namespace, too.
+# Put bmExecutable, bmBreakpointSpec, and bmIterationCount into the lldb namespace, too.
 lldb.bmExecutable = bmExecutable
 lldb.bmBreakpointSpec = bmBreakpointSpec
+lldb.bmIterationCount = bmIterationCount
 
 # And don't forget the runHooks!
 lldb.runHooks = runHooks





More information about the lldb-commits mailing list