Skip to content

Commit

Permalink
Added 4 new benchmarks - query_all, query_all_multifield, query_raw a…
Browse files Browse the repository at this point in the history
…nd query_raw_deferred.

These were created by akaariai for Django tickets #14697 and #14700
  • Loading branch information
spookylukey authored and jacobian committed Nov 24, 2010
1 parent c366752 commit 60fea38
Show file tree
Hide file tree
Showing 16 changed files with 132 additions and 0 deletions.
Empty file.
17 changes: 17 additions & 0 deletions djangobench/benchmarks/query_all/benchmark.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
from djangobench.utils import run_benchmark
from query_all.models import Book

def benchmark():
list(Book.objects.iterator())

def setup():
for i in range(0, 3000):
Book(pk=i,title='foobar_%s' % i ).save()

run_benchmark(
benchmark,
setup=setup,
meta = {
'description': 'A simple Model.objects.iterator() call for large number of objects.',
}
)
4 changes: 4 additions & 0 deletions djangobench/benchmarks/query_all/models.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
from django.db import models

class Book(models.Model):
title = models.CharField(max_length=100)
3 changes: 3 additions & 0 deletions djangobench/benchmarks/query_all/settings.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
from djangobench.base_settings import *

INSTALLED_APPS = ['query_all']
Empty file.
20 changes: 20 additions & 0 deletions djangobench/benchmarks/query_all_multifield/benchmark.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
from djangobench.utils import run_benchmark
from query_all_multifield.models import MultiField

def benchmark():
list(MultiField.objects.iterator())

def setup():
for i in range(0, 3000):
kwargs = {}
for j in range(1, 11):
kwargs['field%s' % j] = 'foobar_%s_%s' % (i, j)
MultiField(**kwargs).save()

run_benchmark(
benchmark,
setup=setup,
meta = {
'description': 'A simple Model.objects.iterator() call for large number of objects and large number of fields.',
}
)
13 changes: 13 additions & 0 deletions djangobench/benchmarks/query_all_multifield/models.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
from django.db import models

class MultiField(models.Model):
field1 = models.CharField(max_length=100)
field2 = models.CharField(max_length=100)
field3 = models.CharField(max_length=100)
field4 = models.CharField(max_length=100)
field5 = models.CharField(max_length=100)
field6 = models.CharField(max_length=100)
field7 = models.CharField(max_length=100)
field8 = models.CharField(max_length=100)
field9 = models.CharField(max_length=100)
field10 = models.CharField(max_length=100)
3 changes: 3 additions & 0 deletions djangobench/benchmarks/query_all_multifield/settings.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
from djangobench.base_settings import *

INSTALLED_APPS = ['query_all_multifield']
Empty file.
20 changes: 20 additions & 0 deletions djangobench/benchmarks/query_raw/benchmark.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
from djangobench.utils import run_benchmark
from query_raw.models import MultiField

def benchmark():
list(MultiField.objects.raw('select * from query_raw_multifield'))

def setup():
for i in range(0, 1000):
kwargs = {}
for j in range(1, 11):
kwargs['field%s' % j] = 'foobar_%s_%s' % (i, j)
MultiField(**kwargs).save()

run_benchmark(
benchmark,
setup=setup,
meta = {
'description': 'A test for fetching large number of objects by Model.objects.all()',
}
)
13 changes: 13 additions & 0 deletions djangobench/benchmarks/query_raw/models.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
from django.db import models

class MultiField(models.Model):
field1 = models.CharField(max_length=100)
field2 = models.CharField(max_length=100)
field3 = models.CharField(max_length=100)
field4 = models.CharField(max_length=100)
field5 = models.CharField(max_length=100)
field6 = models.CharField(max_length=100)
field7 = models.CharField(max_length=100)
field8 = models.CharField(max_length=100)
field9 = models.CharField(max_length=100)
field10 = models.CharField(max_length=100)
3 changes: 3 additions & 0 deletions djangobench/benchmarks/query_raw/settings.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
from djangobench.base_settings import *

INSTALLED_APPS = ['query_raw']
Empty file.
20 changes: 20 additions & 0 deletions djangobench/benchmarks/query_raw_deferred/benchmark.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
from djangobench.utils import run_benchmark
from query_raw_deferred.models import MultiField

def benchmark():
list(MultiField.objects.raw('select id from query_raw_deferred_multifield'))

def setup():
for i in range(0, 1000):
kwargs = {}
for j in range(1, 11):
kwargs['field%s' % j] = 'foobar_%s_%s' % (i, j)
MultiField(**kwargs).save()

run_benchmark(
benchmark,
setup=setup,
meta = {
'description': 'A test for fetching large number of objects by Model.objects.all() with deferred fields.',
}
)
13 changes: 13 additions & 0 deletions djangobench/benchmarks/query_raw_deferred/models.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
from django.db import models

class MultiField(models.Model):
field1 = models.CharField(max_length=100)
field2 = models.CharField(max_length=100)
field3 = models.CharField(max_length=100)
field4 = models.CharField(max_length=100)
field5 = models.CharField(max_length=100)
field6 = models.CharField(max_length=100)
field7 = models.CharField(max_length=100)
field8 = models.CharField(max_length=100)
field9 = models.CharField(max_length=100)
field10 = models.CharField(max_length=100)
3 changes: 3 additions & 0 deletions djangobench/benchmarks/query_raw_deferred/settings.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
from djangobench.base_settings import *

INSTALLED_APPS = ['query_raw_deferred']

0 comments on commit 60fea38

Please sign in to comment.