Browse Source

Include original binaries; remove bin and lib from gitignore.

Harshad Sharma 8 years ago
parent
commit
09650c56ae
3 changed files with 131 additions and 2 deletions
  1. 0 2
      .gitignore
  2. 24 0
      bin/count_bits.py
  3. 107 0
      bin/gen_performance_graph.py

+ 0 - 2
.gitignore

@@ -47,9 +47,7 @@ fabric.properties
 # Virtualenv
 # http://iamzed.com/2009/05/07/a-primer-on-virtualenv/
 .Python
-[Bb]in
 [Ii]nclude
-[Ll]ib
 [Ll]ib64
 [Ll]ocal
 [Ss]cripts

+ 24 - 0
bin/count_bits.py

@@ -0,0 +1,24 @@
+#!/usr/local/pypy-1.6/bin/pypy
+
+import sys
+
+total_bits = 0
+bits_set = 0
+
+while True:
+    block = sys.stdin.read(2 ** 19)
+    if not block:
+        break
+    total_bits += len(block) * 8
+    # print('got block of length %d' % len(block))
+    for char in block:
+        byte = ord(char)
+        # print('got char %d' % byte)
+        for exponent in range(8):
+            bitmask = 2 ** exponent
+            # print('checking mask %d' % bitmask)
+            if byte & bitmask != 0:
+                # print('adding 1 to count')
+                bits_set += 1
+
+print('%s set, %s present, %6.2f%%' % (bits_set, total_bits, bits_set * 100.0 / total_bits))

+ 107 - 0
bin/gen_performance_graph.py

@@ -0,0 +1,107 @@
+#!/usr/bin/python
+
+import sys
+import anydbm
+from pychart import *
+
+def get_timing(kind):
+    database = anydbm.open('performance-numbers', 'r')
+    list_ = []
+    for key in database.keys():
+        fields = key.split()
+        #print fields[0], kind
+        if fields[0] == kind:
+            set_size = float(fields[1])
+            duration = float(database[key])
+            list_.append( ( set_size, duration ) )
+    database.close()
+    list_.sort()
+    return list_
+
+#def get_timing(filename):
+#    file_ = open(filename, 'r')
+#    list_ = []
+#    for line in file_:
+#        fields = line.split()
+#        set_size = float(fields[0])
+#        duration = float(fields[1])
+#        list_.append( ( set_size, duration ) )
+#    file_.close()
+#    return list_
+
+def get_hybrid_timing():
+    return get_timing('hybrid')
+
+def get_array_timing():
+    return get_timing('array')
+
+def get_seek_timing():
+    return get_timing('seek')
+
+def get_mmap_timing():
+    return get_timing('mmap')
+
+def desired_y_max(*list_):
+    maximum = 0.0
+    for element in list_:
+        for set_size, duration in element:
+            maximum = max(duration, maximum)
+    return maximum
+
+def main():
+    theme.get_options()
+    theme.output_format = 'pdf'
+    theme.use_color = 1
+    theme.output_file = 'performance-graph.pdf'
+    theme.default_font_size = 15
+    theme.reinitialize()
+
+    width = 800
+    height = width * 4 // 5
+    size = (width, height)
+
+    hybrid_timing_data = get_hybrid_timing()
+    print 'hybrid', hybrid_timing_data
+    array_timing_data = get_array_timing()
+    print 'array', array_timing_data
+    seek_timing_data = get_seek_timing()
+    print 'seek', seek_timing_data
+    mmap_timing_data = get_mmap_timing()
+    print 'mmap', mmap_timing_data
+
+    y_max = desired_y_max(array_timing_data, seek_timing_data, hybrid_timing_data, mmap_timing_data)
+
+    can = canvas.default_canvas()
+
+    ar = area.T(
+        size = size,
+        legend=legend.T(),
+        x_range = (1, None),
+        y_range = (0.0001, y_max + 100),
+        #x_coord = log_coord.T(),
+        #y_coord = log_coord.T(),
+        x_coord = linear_coord.T(),
+        y_coord = linear_coord.T(),
+        x_axis = axis.X(format="%g", label="Number of elements in set"),
+        y_axis = axis.Y(format="%g", label="Seconds"),
+        )
+
+    lp = line_plot.T(data=array_timing_data, label="Array")
+    ar.add_plot(lp)
+                    
+    lp = line_plot.T(data=seek_timing_data, label="Seek")
+    ar.add_plot(lp)
+                    
+    lp = line_plot.T(data=hybrid_timing_data, label="Hybrid")
+    ar.add_plot(lp)
+                    
+    lp = line_plot.T(data=mmap_timing_data, label="mmap")
+    ar.add_plot(lp)
+                    
+    ar.draw()
+
+    #can.show(ar.x_pos(4), ar.y_pos(970), "/a50{}seek")
+
+main()
+
+