mirror of
https://github.com/boostorg/program_options.git
synced 2026-01-19 04:22:15 +00:00
54 lines
1.4 KiB
Python
54 lines
1.4 KiB
Python
#!/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/boost-svn 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++ -Os", "g++ -O3"]:
|
|
print "****", compiler, "****"
|
|
run_tests(range(1, 20), compiler)
|
|
|
|
|
|
|