adding in vbench

This commit is contained in:
fawce
2012-05-23 15:36:15 -04:00
parent 70b0088e02
commit 89822748a7
5 changed files with 163 additions and 7 deletions
+3
View File
@@ -43,3 +43,6 @@ docs/_build/*
# credentials and other uncheckinables
host_settings.py
# database of vbench
benchmarks.db
+1 -7
View File
@@ -23,13 +23,6 @@ Sphinx==1.1.2
Paver==1.0.5
Paved==0.3
# Testing
nose==1.1.2
coverage==3.5.1
mock==0.7.2
nosexcover==1.0.7
pylint==0.25.1
# pycco deps
Markdown==2.1.1
Pycco==0.3.0
@@ -39,3 +32,4 @@ wsgiref==0.1.2
# misc
pycleaner==1.1.1
-e git://github.com/pydata/vbench.git#egg=vbench
+12
View File
@@ -0,0 +1,12 @@
from vbench.api import BenchmarkRunner
from suite import *
def run_process():
runner = BenchmarkRunner(benchmarks, REPO_PATH, REPO_URL,
BUILD, DB_PATH, TMP_DIR, PREPARE,
run_option='all', start_date=START_DATE,
module_dependencies=dependencies)
runner.run()
if __name__ == '__main__':
run_process()
+111
View File
@@ -0,0 +1,111 @@
from vbench.api import Benchmark, GitRepo
from datetime import datetime
import os
modules = ['ziplines']
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])
for bm in benchmarks:
assert(bm.name is not None)
import getpass
import sys
USERNAME = getpass.getuser()
if sys.platform == 'darwin':
HOME = '/Users/%s' % USERNAME
else:
HOME = '/home/%s' % USERNAME
REPO_PATH = os.path.join(HOME, 'projects/qexec/zipline_repo')
REPO_URL = 'git@github.com:quantopian/zipline.git'
DB_PATH = os.path.join(REPO_PATH, 'vb_suite/benchmarks.db')
TMP_DIR = os.path.join(HOME, 'tmp/vb_zipline')
PREPARE = """
"""
BUILD = """
"""
dependencies = ['zipline_bench_functions.py']
START_DATE = datetime(2011, 6, 1)
repo = GitRepo(REPO_PATH)
RST_BASE = '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, 'index.rst'), 'w') as f:
print >> f, """
Performance Benchmarks
======================
These historical benchmark graphs were produced with `vbench
<http://github.com/pydata/vbench>`__.
.. toctree::
:hidden:
:maxdepth: 3
"""
for modname, mod_bmks in sorted(by_module.items()):
print >> f, ' vb_%s' % modname
modpath = os.path.join(RST_BASE, 'vb_%s.rst' % modname)
with open(modpath, 'w') as mh:
header = '%s\n%s\n\n' % (modname, '=' * len(modname))
print >> mh, header
for bmk in mod_bmks:
print >> mh, bmk.name
print >> mh, '-' * len(bmk.name)
print >> mh, '.. include:: vbench/%s.txt\n' % bmk.name
+36
View File
@@ -0,0 +1,36 @@
try:
from zipline.simulator import AddressAllocator
pass
except Exception, e:
from zipline.core.devsimulator import AddressAllocator
from zipline.lines import SimulatedTrading
allocator = AddressAllocator(1001)
def get_zipline():
zipline_test_config = {
'allocator':allocator,
'sid':133
}
zipline = SimulatedTrading.create_test_zipline(
**zipline_test_config
)
return zipline
def run_basic_zipline():
zipline = get_zipline()
zipline.simulate(blocking=True)
def load_ndict():
from zipline import ndict
nd = ndict({})
keyname = 'a %i'
for i in xrange(1000000):
nd[keyname % i] = i
for i in xrange(1000000):
nd[keyname % i]