blob: 790517e926b78651705bea9ca3366024ff06fabe [file] [log] [blame]
#!/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)