42 lines
802 B
Python
Executable File
42 lines
802 B
Python
Executable File
#!/usr/bin/python
|
|
|
|
# Simple benchmark for Capstone by disassembling random code. By Nguyen Anh Quynh, 2014
|
|
|
|
from capstone import *
|
|
|
|
from time import time
|
|
from random import randint
|
|
|
|
|
|
def random_str(size):
|
|
lst = [str(randint(0, 255)) for _ in xrange(size)]
|
|
return "".join(lst)
|
|
|
|
def cs(md, data):
|
|
insns = md.disasm(data, 0)
|
|
# uncomment below line to speed up this function 200 times!
|
|
# return
|
|
for i in insns:
|
|
if i.address == 0x100000:
|
|
print i
|
|
|
|
md = Cs(CS_ARCH_X86, CS_MODE_32)
|
|
md.detail = False
|
|
|
|
# warm up few times
|
|
for i in xrange(3):
|
|
data = random_str(128)
|
|
cs(md, data)
|
|
|
|
# start real benchmark
|
|
c_t = 0
|
|
for i in xrange(10000):
|
|
code = random_str(128)
|
|
|
|
t1 = time()
|
|
cs(md, code)
|
|
c_t += time() - t1
|
|
|
|
|
|
print "Capstone:", c_t, "seconds"
|