Documentation updated.
Test_all_versions script added. Some minor misc changes. Added polybench.
This commit is contained in:
@@ -15,7 +15,7 @@ def reset_queries():
|
||||
|
||||
def show_queries():
|
||||
print; print 'QUERIES:',len(connection.queries); pprint(connection.queries); print; connection.queries=[]
|
||||
|
||||
|
||||
class Command(NoArgsCommand):
|
||||
help = ""
|
||||
|
||||
@@ -38,6 +38,4 @@ class Command(NoArgsCommand):
|
||||
o=ResearchProject.objects.create(topic="Swallow Aerodynamics", supervisor="Dr. Winter")
|
||||
print Project.objects.all()
|
||||
print
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,106 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
This module is a scratchpad for general development, testing & debugging
|
||||
"""
|
||||
|
||||
from django.core.management.base import NoArgsCommand
|
||||
from django.db.models import connection
|
||||
from pprint import pprint
|
||||
import settings
|
||||
import sys
|
||||
from pexp.models import *
|
||||
|
||||
num_objects=15000
|
||||
|
||||
def reset_queries():
|
||||
connection.queries=[]
|
||||
|
||||
def show_queries():
|
||||
print; print 'QUERIES:',len(connection.queries); pprint(connection.queries); print; reset_queries()
|
||||
|
||||
import time
|
||||
|
||||
###################################################################################
|
||||
### benchmark wrappers
|
||||
|
||||
def print_timing(func, message='', iterations=1):
|
||||
def wrapper(*arg):
|
||||
results=[]
|
||||
reset_queries()
|
||||
for i in xrange(iterations):
|
||||
t1 = time.time()
|
||||
x = func(*arg)
|
||||
t2 = time.time()
|
||||
results.append((t2-t1)*1000.0)
|
||||
res_sum=0
|
||||
for r in results: res_sum +=r
|
||||
median = res_sum / len(results)
|
||||
print '%s%-19s: %.0f ms, %i queries' % (
|
||||
message,func.func_name,
|
||||
median,
|
||||
len(connection.queries)/len(results)
|
||||
)
|
||||
sys.stdout.flush()
|
||||
return wrapper
|
||||
|
||||
def run_vanilla_any_poly(func, iterations=1):
|
||||
f=print_timing(func,' ', iterations)
|
||||
f(nModelC)
|
||||
f=print_timing(func,'poly ', iterations)
|
||||
f(ModelC)
|
||||
|
||||
|
||||
###################################################################################
|
||||
### benchmarks
|
||||
|
||||
def bench_create(model):
|
||||
for i in xrange(num_objects):
|
||||
model.objects.create(field1='abc'+str(i), field2='abcd'+str(i), field3='abcde'+str(i))
|
||||
#print 'count:',model.objects.count()
|
||||
|
||||
def bench_load1(model):
|
||||
for o in model.objects.all():
|
||||
pass
|
||||
|
||||
def bench_load1_short(model):
|
||||
for i in xrange(num_objects/100):
|
||||
for o in model.objects.all()[:100]:
|
||||
pass
|
||||
|
||||
def bench_load2(model):
|
||||
for o in model.objects.all():
|
||||
f1=o.field1
|
||||
f2=o.field2
|
||||
f3=o.field3
|
||||
|
||||
def bench_load2_short(model):
|
||||
for i in xrange(num_objects/100):
|
||||
for o in model.objects.all()[:100]:
|
||||
f1=o.field1
|
||||
f2=o.field2
|
||||
f3=o.field3
|
||||
|
||||
def bench_delete(model):
|
||||
model.objects.all().delete()
|
||||
|
||||
###################################################################################
|
||||
### Command
|
||||
|
||||
class Command(NoArgsCommand):
|
||||
help = ""
|
||||
|
||||
def handle_noargs(self, **options):
|
||||
print 'polybench - sqlite test db is stored in:',settings.SQLITE_DB_PATH
|
||||
|
||||
func_list = [
|
||||
( bench_delete, 1 ),
|
||||
( bench_create, 1 ),
|
||||
( bench_load1, 5 ),
|
||||
( bench_load1_short, 5 ),
|
||||
( bench_load2, 5 ),
|
||||
( bench_load2_short, 5 )
|
||||
]
|
||||
for f,iterations in func_list:
|
||||
run_vanilla_any_poly(f,iterations=iterations)
|
||||
|
||||
print
|
||||
@@ -0,0 +1,34 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
This module is a scratchpad for general development, testing & debugging
|
||||
"""
|
||||
|
||||
from django.core.management.base import NoArgsCommand
|
||||
from django.db.models import connection
|
||||
from pprint import pprint
|
||||
import settings
|
||||
|
||||
from pexp.models import *
|
||||
|
||||
def reset_queries():
|
||||
connection.queries=[]
|
||||
|
||||
def show_queries():
|
||||
print; print 'QUERIES:',len(connection.queries); pprint(connection.queries); print; connection.queries=[]
|
||||
|
||||
class Command(NoArgsCommand):
|
||||
help = ""
|
||||
|
||||
def handle_noargs(self, **options):
|
||||
#print 'polycmd - sqlite test db is stored in:',settings.SQLITE_DB_PATH
|
||||
print
|
||||
|
||||
Project.objects.all().delete()
|
||||
o=Project.objects.create(topic="John's gathering")
|
||||
o=ArtProject.objects.create(topic="Sculpting with Tim", artist="T. Turner")
|
||||
o=ResearchProject.objects.create(topic="Swallow Aerodynamics", supervisor="Dr. Winter")
|
||||
print Project.objects.all()
|
||||
print
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user