forked from pandas-dev/pandas
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsuite.py
103 lines (77 loc) · 2.86 KB
/
suite.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
from vbench.api import Benchmark, GitRepo, BenchmarkRunner
from datetime import datetime
import os
modules = ['groupby', 'indexing', 'reindex',
'sparse', 'index_object', 'miscellaneous',
'stat_ops', 'join_merge', 'panel_ctor']
by_module = {}
benchmarks = []
for modname in modules:
ref = __import__(modname)
by_module[modname] = [v for v in ref.__dict__.values()
if isinstance(v, Benchmark)]
benchmarks.extend(by_module[modname])
REPO_PATH = '/home/wesm/code/pandas'
DB_PATH = '/home/wesm/code/pandas/vb_suite/benchmarks.db'
TMP_DIR = '/home/wesm/tmp/vb_pandas'
PREPARE = """
python setup.py clean
"""
BUILD = """
python setup.py build_ext --inplace
"""
dependencies = ['pandas_vb_common.py']
START_DATE = datetime(2010, 6, 1)
repo = GitRepo(REPO_PATH)
RST_BASE = '../doc/source'
# HACK!
timespan = [datetime(2011, 1, 1), datetime(2012, 1, 1)]
def generate_rst_files(benchmarks):
import matplotlib as mpl
mpl.use('Agg')
import matplotlib.pyplot as plt
vb_path = os.path.join(RST_BASE, 'vbench')
fig_base_path = os.path.join(vb_path, 'figures')
if not os.path.exists(vb_path):
print 'creating %s' % vb_path
os.makedirs(vb_path)
if not os.path.exists(fig_base_path):
print 'creating %s' % fig_base_path
os.makedirs(fig_base_path)
for bmk in benchmarks:
print 'Generating rst file for %s' % bmk.name
rst_path = os.path.join(RST_BASE, 'vbench/%s.txt' % bmk.name)
fig_full_path = os.path.join(fig_base_path, '%s.png' % bmk.name)
# make the figure
plt.figure(figsize=(10, 6))
ax = plt.gca()
bmk.plot(DB_PATH, ax=ax)
start, end = ax.get_xlim()
plt.xlim([start - 30, end + 30])
plt.savefig(fig_full_path, bbox_inches='tight')
plt.close('all')
fig_rel_path = 'vbench/figures/%s.png' % bmk.name
rst_text = bmk.to_rst(image_path=fig_rel_path)
with open(rst_path, 'w') as f:
f.write(rst_text)
with open(os.path.join(RST_BASE, 'vbench.rst'), 'w') as f:
print >> f, """
Performance Benchmarks
======================
These historical benchmark graphs were produced with `vbench
<http://github.com/wesm/vbench>`__.
The ``pandas_vb_common`` setup script can be found here_
.. _here: https://github.com/wesm/pandas/tree/master/vb_suite
Produced on a machine with
- Intel Core i7 950 processor
- (K)ubuntu Linux 12.10
- Python 2.7.2 64-bit (Enthought Python Distribution 7.1-2)
- NumPy 1.6.1
"""
for modname, mod_bmks in sorted(by_module.items()):
print >> f, '%s\n%s\n' % (modname, '-' * len(modname))
for bmk in mod_bmks:
print >> f, bmk.name
print >> f, '~' * len(bmk.name)
print >> f, '.. include:: vbench/%s.txt\n' % bmk.name