#!/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"

add benchmark.py