mirror of
https://github.com/boostorg/program_options.git
synced 2026-01-19 04:22:15 +00:00
Add a code size testing script.
[SVN r23769]
This commit is contained in:
53
test/program_options_size_test.py
Normal file
53
test/program_options_size_test.py
Normal file
@@ -0,0 +1,53 @@
|
||||
#!/usr/bin/python
|
||||
|
||||
import os
|
||||
import string
|
||||
|
||||
|
||||
call = " hook(10);\n";
|
||||
call = " hook(10); hook2(10);hook3(0);hook4(0);\n";
|
||||
|
||||
def run_test(num_calls, compiler_command):
|
||||
f = open("program_options_test.cpp", "w")
|
||||
f.write("""#include <boost/program_options.hpp>
|
||||
using namespace boost::program_options;
|
||||
|
||||
void do_it()
|
||||
{
|
||||
boost::program_options::options_description desc;
|
||||
desc.add_options()
|
||||
""")
|
||||
for i in range(0, num_calls):
|
||||
f.write("(\"opt%d\", value<int>())\n")
|
||||
f.write(";\n}\n")
|
||||
f.close()
|
||||
os.system(compiler_command + " -c -save-temps -I /home/ghost/Work/boost-rc program_options_test.cpp")
|
||||
|
||||
nm = os.popen("nm -S program_options_test.o")
|
||||
for l in nm:
|
||||
if string.find(l, "Z5do_itv") != -1:
|
||||
break
|
||||
size = int(string.split(l)[1], 16)
|
||||
return size
|
||||
|
||||
def run_tests(range, compiler_command):
|
||||
|
||||
last_size = None
|
||||
first_size = None
|
||||
for num in range:
|
||||
size = run_test(num, compiler_command)
|
||||
if last_size:
|
||||
print "%2d calls: %5d bytes (+ %d)" % (num, size, size-last_size)
|
||||
else:
|
||||
print "%2d calls: %5d bytes" % (num, size)
|
||||
first_size = size
|
||||
last_size = size
|
||||
print "Avarage: ", (last_size-first_size)/(range[-1]-range[0])
|
||||
|
||||
if __name__ == '__main__':
|
||||
for compiler in [ "g++-3.3 -Os", "g++-3.3 -O3", "g++-3.4 -Os", "g++-3.4 -O3"]:
|
||||
print "****", compiler, "****"
|
||||
run_tests(range(1, 20), compiler)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user