45 lines
1.2 KiB
Python
45 lines
1.2 KiB
Python
from manticore import Manticore
|
|
from sys import argv, exit
|
|
|
|
def display(results):
|
|
for line in str(results).split('\n'):
|
|
print " " + line
|
|
|
|
def benchmark(program):
|
|
print "[*] Benchmarking program \"{}\"".format(program)
|
|
|
|
m = Manticore(program)
|
|
m.should_profile = True
|
|
m.run()
|
|
|
|
results = m._executor.dump_stats()
|
|
if results is None:
|
|
print "[*] Failed to collect stats for program {}".format(program)
|
|
return
|
|
|
|
display(results)
|
|
return results
|
|
|
|
if __name__ == "__main__":
|
|
args = argv[1:]
|
|
|
|
if len(args) == 0:
|
|
print "usage: python {} PROGRAM1 PROGRAM2...".format(argv[0])
|
|
exit()
|
|
|
|
first_program = args[0]
|
|
other_programs = args[1:]
|
|
overall_results = benchmark(first_program)
|
|
|
|
if other_programs:
|
|
for program in other_programs:
|
|
results = benchmark(program)
|
|
overall_results.time_elapsed += results.time_elapsed
|
|
overall_results.instructions_executed += results.instructions_executed
|
|
overall_results.solver_time += results.solver_time
|
|
overall_results.loading_time += results.loading_time
|
|
overall_results.saving_time += results.saving_time
|
|
|
|
print "Overall:"
|
|
display(overall_results)
|