suite: benchmark.py get disasm code from binary file (python itself) rather than randomize data - this stablizes results, and can be compared with other bindings
diff --git a/suite/benchmark.py b/suite/benchmark.py
index bb18fd7..e96f1dd 100755
--- a/suite/benchmark.py
+++ b/suite/benchmark.py
@@ -8,30 +8,42 @@
 from random import randint
 
 
-def random_str(size):
-    lst = [str(randint(0, 255)) for _ in xrange(size)]
-    return "".join(lst)
+# file providing code to disassemble
+FILE = '/usr/bin/python'
 
-def cs(md, data):
-    insns = md.disasm(data, 0)
+
+def get_code(f, size):
+    code = f.read(size)
+    if len(code) != size:  # reached end-of-file?
+        f.seek(0)
+        code = f.read(size)
+
+    return code
+
+
+def cs(md, code):
+    insns = md.disasm(code, 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
 
+cfile = open(FILE)
+
 # warm up few times
 for i in xrange(3):
-    data = random_str(128)
-    cs(md, data)
+    code = get_code(cfile, 128)
+    cs(md, code)
 
 # start real benchmark
 c_t = 0
 for i in xrange(10000):
-    code = random_str(128)
+    code = get_code(cfile, 128)
 
     t1 = time()
     cs(md, code)