File: benchmarks.rst

package info (click to toggle)
python-django-treebeard 2.0~beta1-4
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 584 kB
  • ctags: 624
  • sloc: python: 4,037; makefile: 92
file content (135 lines) | stat: -rw-r--r-- 11,351 bytes parent folder | download | duplicates (3)
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
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
Benchmarks
==========

``tbbench`` is a django app that isn't installed by default. I wrote it to
find spots that could be optimized, and it may help you to tweak your database
settings.

To run the benchmarks:
  
  1. Add ``tbbench`` to your Python path
  2. Add ``'tbbench'`` to the ``INSTALLED_APPS`` section in your django
     settings file.
  3. Run :command:`python manage.py syncdb`
  4. In the ``tbbench`` dir, run :command:`python run.py`

.. note::

   If the `django-mptt`_ package is also installed, both libraries will
   be tested with the exact same data and operations.

Currently, the available tests are:

  1. Inserts: adds 1000 nodes to a tree, in different places: root
     nodes, normal nodes, leaf nodes
  2. Descendants: retrieves the full branch under every node several times.
  3. Move: moves nodes several times. This operation can be expensive
     because involves reodrering and data maintenance.
  4. Delete: Removes groups of nodes.

For every available library (treebeard and mptt), two models are tested: a
vanilla model, and a model with a "tree order by" attribute enabled
(:attr:`~treebeard.MP_Node.node_order_by` in treebeard,
``order_insertion_by`` in mptt).

Also, every test will be tested with and without database transactions
(``tx``).

The output of the script is a reST table, with the time for every test in
milliseconds (so small numbers are better).

By default, these tests use the default tables created by ``syncdb``. Even
when the results of ``treebeard`` are good, they can be improved *a lot*
with better indexing. The Materialized Path Tree approach used by
``treebeard`` is *very* sensitive to database indexing, so you'll
probably want to ``EXPLAIN`` your most common queries involving the
:attr:`~treebeard.MP_Node.path` field and add proper indexes.

.. note::

   Tests results in Ubuntu 8.04.1 on a Thinkpad T61 with 4GB of ram.

.. warning::

   These results shouldn't be taken as *"X is faster than Y"*,
   but as *"both X and Y are very fast"*.

Databases tested:

 - MySQL InnoDB 5.0.51a, default settings
 - MySQL MyISAM 5.0.51a, default settings
 - PostgreSQL 8.2.7, default settings, mounted on RAM
 - PostgreSQL 8.3.3, default settings, mounted on RAM
 - SQLite3, mounted on RAM

+-------------+--------------+-------------------+-------------------+-------------------+-------------------+-------------------+
| Test        | Model        |       innodb      |       myisam      |        pg82       |        pg83       |       sqlite      |
|             |              +---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+
|             |              |  no tx  |    tx   |  no tx  |    tx   |  no tx  |    tx   |  no tx  |    tx   |  no tx  |    tx   |
+=============+==============+=========+=========+=========+=========+=========+=========+=========+=========+=========+=========+
| Inserts     | TB MP        |    3220 |    2660 |    3181 |    2766 |    2859 |    2542 |    2540 |    2309 |    2205 |    1934 |
|             +--------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+
|             | TB AL        |    1963 |    1905 |    1998 |    1936 |    1937 |    1775 |    1736 |    1631 |    1583 |    1457 |
|             +--------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+
|             | TB NS        |    3386 |    3438 |    3359 |    3420 |    4061 |    7242 |    3536 |    4401 |    2794 |    2554 |
|             +--------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+
|             | MPTT         |    7559 |    9280 |    7525 |    9028 |    5202 |   14969 |    4764 |    6022 |    3781 |    3484 |
|             +--------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+
|             | TB MP Sorted |    4732 |    5627 |    5038 |    5215 |    4022 |    4808 |    3415 |    3942 |    3250 |    3045 |
|             +--------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+
|             | TB AL Sorted |    1096 |    1052 |    1092 |    1033 |    1239 |     999 |    1049 |     896 |     860 |     705 |
|             +--------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+
|             | TB NS Sorted |    6637 |    6373 |    6283 |    6313 |    7548 |   10053 |    6717 |   10941 |    5907 |    5461 |
|             +--------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+
|             | MPTT Sorted  |    8564 |   10729 |    7947 |   10221 |    6077 |    7567 |    5490 |    6894 |    4842 |    4284 |
+-------------+--------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+
| Descendants | TB MP        |    6298 |     N/A |    6460 |     N/A |    7643 |     N/A |    7132 |     N/A |   10415 |     N/A |
|             +--------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+
|             | TB AL        |   56850 |     N/A |  116550 |     N/A |   54249 |     N/A |   50682 |     N/A |   50521 |     N/A |
|             +--------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+
|             | TB NS        |    5595 |     N/A |    5824 |     N/A |   10080 |     N/A |    5840 |     N/A |    5965 |     N/A |
|             +--------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+
|             | MPTT         |    5268 |     N/A |    5306 |     N/A |    9394 |     N/A |    8745 |     N/A |    5197 |     N/A |
|             +--------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+
|             | TB MP Sorted |    6698 |     N/A |    6408 |     N/A |    8248 |     N/A |    7265 |     N/A |   10513 |     N/A |
|             +--------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+
|             | TB AL Sorted |   59817 |     N/A |   59718 |     N/A |   56767 |     N/A |   52574 |     N/A |   53458 |     N/A |
|             +--------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+
|             | TB NS Sorted |    5631 |     N/A |    5858 |     N/A |    9980 |     N/A |    9210 |     N/A |    6026 |     N/A |
|             +--------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+
|             | MPTT Sorted  |    5186 |     N/A |    5453 |     N/A |    9723 |     N/A |    8912 |     N/A |    5333 |     N/A |
+-------------+--------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+
| Move        | TB MP        |     837 |    1156 |     992 |    1211 |     745 |    1040 |     603 |     740 |     497 |     468 |
|             +--------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+
|             | TB AL        |    8708 |    8684 |    9798 |    8890 |    7243 |    7213 |    6721 |    6757 |    7051 |    6863 |
|             +--------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+
|             | TB NS        |     683 |     658 |     660 |     679 |    1266 |    2000 |     650 |     907 |     672 |     637 |
|             +--------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+
|             | MPTT         |    6449 |    7793 |    6356 |    7003 |    4993 |   20743 |    4445 |    8977 |     921 |     896 |
|             +--------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+
|             | TB MP Sorted |    6730 |    7036 |    6743 |    7023 |    6410 |   19294 |    3622 |   12380 |    2622 |    2487 |
|             +--------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+
|             | TB AL Sorted |    3866 |    3731 |    3873 |    3717 |    3587 |    3599 |    3394 |    3371 |    3491 |    3416 |
|             +--------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+
|             | TB NS Sorted |    2017 |    2017 |    1958 |    2078 |    4397 |    7981 |    3892 |    8110 |    1543 |    1496 |
|             +--------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+
|             | MPTT Sorted  |    6563 |   10540 |    6427 |    9358 |    5132 |   20426 |    4601 |    9428 |     957 |     955 |
+-------------+--------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+
| Delete      | TB MP        |     714 |     651 |     733 |     686 |     699 |     689 |     595 |     561 |     636 |     557 |
|             +--------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+
|             | TB AL        |     975 |    1093 |    2199 |     991 |     758 |     847 |     714 |     804 |     843 |     921 |
|             +--------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+
|             | TB NS        |     745 |     745 |     742 |     763 |     555 |     698 |     430 |     506 |     530 |     513 |
|             +--------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+
|             | MPTT         |    2928 |    4473 |    2914 |    4814 |   69385 |  167777 |   18186 |   26270 |    1617 |    1635 |
|             +--------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+
|             | TB MP Sorted |     811 |     751 |     808 |     737 |     798 |    1180 |     648 |    1101 |     612 |     565 |
|             +--------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+
|             | TB AL Sorted |    1030 |    1030 |    1055 |     987 |     797 |    1023 |     760 |     969 |     884 |     859 |
|             +--------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+
|             | TB NS Sorted |     756 |     750 |     728 |     758 |     807 |     847 |     576 |     748 |     501 |     490 |
|             +--------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+
|             | MPTT Sorted  |    3729 |    5108 |    3833 |    4776 |   86545 |  148596 |   34059 |  127125 |    2024 |    1787 |
+-------------+--------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+

.. _`django-mptt`: http://code.google.com/p/django-mptt/