diff options
Diffstat (limited to 'progs/tests/api_speed.py')
-rwxr-xr-x | progs/tests/api_speed.py | 143 |
1 files changed, 0 insertions, 143 deletions
diff --git a/progs/tests/api_speed.py b/progs/tests/api_speed.py deleted file mode 100755 index 0ddaf5836c..0000000000 --- a/progs/tests/api_speed.py +++ /dev/null @@ -1,143 +0,0 @@ -#!/usr/bin/env python2 - -# (C) Copyright IBM Corporation 2004 -# All Rights Reserved. -# -# Permission is hereby granted, free of charge, to any person obtaining a -# copy of this software and associated documentation files (the "Software"), -# to deal in the Software without restriction, including without limitation -# on the rights to use, copy, modify, merge, publish, distribute, sub -# license, and/or sell copies of the Software, and to permit persons to whom -# the Software is furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice (including the next -# paragraph) shall be included in all copies or substantial portions of the -# Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL -# IBM AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS -# IN THE SOFTWARE. -# -# Authors: -# Ian Romanick <idr@us.ibm.com> - - -# This script is used to run api_speed against several different libGL -# libraries and compare the results. See the show_usage function for more -# details on how to use it. - - -import re, os, sys, getopt - -class results: - def process_file(self, f): - self.cycles = {} - self.iterations = -1 - - for line in f.readlines(): - m = re.match("(\d+) calls to (.{20}) required (\d+) cycles.", line) - - if self.iterations != -1 and int(m.group(1)) != self.iterations: - raise - - # This could be done with lstrip, but the version of - # the Python library on my system doesn't have it. - # The installed version of Python is quite old. :( - - temp = m.group(2) - function_name = None - for i in range(len(temp)): - if temp[i] != ' ': - function_name = temp[i:] - break - - if function_name == None: - raise - - self.cycles[ function_name ] = int(m.group(3)) - self.iterations = int(m.group(1)) - - - def show_results(self): - for name in self.cycles: - print "%s -> %f" % (name, float(self.cycles[name]) / self.iterations) - - - def compare_results(self, other): - for name in self.cycles: - if other.cycles.has_key(name): - a = float(self.cycles[name]) / float(self.iterations) - b = float(other.cycles[name]) / float(other.iterations) - if abs( a ) < 0.000001: - print "a = %f, b = %f" % (a, b) - else: - p = (100.0 * b / a) - 100.0 - print "%- 20s %7.2f - %7.2f = % -6.2f (%+.1f%%)" % (name, a, b, a - b, p) - return - - -def make_execution_string(lib, iterations): - if lib == None: - return "./api_speed %u" % (iterations) - else: - return "LD_PRELOAD=%s ./api_speed %u" % (lib, iterations) - - -def show_usage(): - print """Usage: %s [-i iterations] {library ...} - -The full path to one or more libGL libraries (including the full name of the -library) can be included on the command-line. Each library will be tested, -and the results compared. The first library listed will be used as the -"base line" for all comparisons.""" % (sys.argv[0]) - sys.exit(1) - - -if __name__ == '__main__': - try: - (args, trail) = getopt.getopt(sys.argv[1:], "i:") - except Exception,e: - show_usage() - - iterations = 1000000 - try: - for (arg,val) in args: - if arg == "-i": - iterations = int(val) - except Exception,e: - show_usage() - - - # If no libraries were specifically named, just run the test against - # the default system libGL. - - if len(trail) == 0: - trail.append(None) - - - result_array = [] - names = [] - - for lib in trail: - s = make_execution_string( lib, iterations ) - r = results() - r.process_file( os.popen(s) ) - names.append(lib) - result_array.append(r) - - - # If the test was only run against one library, just show the results - # of the test run. Otherwise, compare each successive run against - # the first run. - - if len( result_array ) == 1: - result_array[0].show_results() - else: - for i in range(1, len( result_array )): - print "%s vs. %s" % (names[0], names[i]) - result_array[0].compare_results( result_array[i] ) - print "" |