summaryrefslogtreecommitdiff
path: root/doc/howtos/profilecode.rst
diff options
context:
space:
mode:
authorVictor Feyens <vfe@odoo.com>2021-04-30 13:24:57 +0000
committerAntoine Vandevenne (anv) <anv@odoo.com>2021-05-04 08:09:20 +0000
commit27bad8c3e32049ec69a588df0558e57a0b928309 (patch)
treeb60e430163d486c8c1fd052738c9854aeb8300f5 /doc/howtos/profilecode.rst
parent75a122bbae3a32bfa79da3506179fc63a8bced5d (diff)
[MOV] doc: move documentation to a dedicated repository
In odoo/documentation-user#945, the developer documentation is merged with the user documentation in a single repository and build config. This commit then removes source files for the developer documentation from the odoo/odoo repository. DOC PR: https://github.com/odoo/documentation-user/pull/945 task-2351938 task-2352371 task-2205684 task-2352544 Co-authored-by: Victor Feyens <vfe@odoo.com> Co-authored-by: Antoine Vandevenne <anv@odoo.com>
Diffstat (limited to 'doc/howtos/profilecode.rst')
-rw-r--r--doc/howtos/profilecode.rst131
1 files changed, 0 insertions, 131 deletions
diff --git a/doc/howtos/profilecode.rst b/doc/howtos/profilecode.rst
deleted file mode 100644
index dcb86338c8a..00000000000
--- a/doc/howtos/profilecode.rst
+++ /dev/null
@@ -1,131 +0,0 @@
-===================
-Profiling Odoo code
-===================
-
-.. warning::
-
- This tutorial requires :ref:`having installed Odoo <setup/install>`
- and :doc:`writing Odoo code <backend>`
-
-Graph a method
-==============
-
-Odoo embeds a profiler of code. This embedded profiler output can be used to
-generate a graph of calls triggered by the method, number of queries, percentage
-of time taken in the method itself as well as the time that the method took and
-its sub-called methods.
-
-.. code:: python
-
- from odoo.tools.misc import profile
- [...]
- @profile('/temp/prof.profile')
- def mymethod(...)
-
-This produces a file called /temp/prof.profile
-
-A tool called *gprof2dot* will produce a graph with this result:
-
-.. code:: bash
-
- gprof2dot -f pstats -o /temp/prof.xdot /temp/prof.profile
-
-A tool called *xdot* will display the resulting graph:
-
-.. code:: bash
-
- xdot /temp/prof.xdot
-
-Log a method
-============
-
-Another profiler can be used to log statistics on a method:
-
-.. code:: python
-
- from odoo.tools.profiler import profile
- [...]
- @profile
- @api.model
- def mymethod(...):
-
-The statistics will be displayed into the logs once the method to be analysed is
-completely reviewed.
-
-.. code:: bash
-
- 2018-03-28 06:18:23,196 22878 INFO openerp odoo.tools.profiler:
- calls queries ms
- project.task ------------------------ /home/odoo/src/odoo/addons/project/models/project.py, 638
-
- 1 0 0.02 @profile
- @api.model
- def create(self, vals):
- # context: no_log, because subtype already handle this
- 1 0 0.01 context = dict(self.env.context, mail_create_nolog=True)
-
- # for default stage
- 1 0 0.01 if vals.get('project_id') and not context.get('default_project_id'):
- context['default_project_id'] = vals.get('project_id')
- # user_id change: update date_assign
- 1 0 0.01 if vals.get('user_id'):
- vals['date_assign'] = fields.Datetime.now()
- # Stage change: Update date_end if folded stage
- 1 0 0.0 if vals.get('stage_id'):
- vals.update(self.update_date_end(vals['stage_id']))
- 1 108 631.8 task = super(Task, self.with_context(context)).create(vals)
- 1 0 0.01 return task
-
- Total:
- 1 108 631.85
-
-Dump stack
-==========
-
-Sending the SIGQUIT signal to an Odoo process (only available on POSIX) makes
-this process output the current stack trace to log, with info level. When an
-odoo process seems stucked, sending this signal to the process permit to know
-what the process is doing, and letting the process continue his job.
-
-Tracing code execution
-======================
-
-Instead of sending the SIGQUIT signal to an Odoo process often enough, to check
-where the processes are performing worse than expected, we can use the `py-spy`_ tool to
-do it for us.
-
-Install py-spy
---------------
-
-.. code:: bash
-
- python3 -m pip install py-spy
-
-Record executed code
---------------------
-
-As py-spy is installed, we now record the executed code lines.
-This tool will record, multiple times a second, the stacktrace of the process.
-
-.. code:: bash
-
- # record to raw file
- py-spy record -o profile.json -f speedscope --pid <PID>
-
- # OR record directly to svg
- py-spy record -o profile.svg --pid <PID>
-
-where <PID> is the process ID of the odoo process you want to graph.
-
-To open profile.json you can use online tool `speedscope.app`_.
-
-To open profile.svg you should use browser, because other viewer may not
-support interactive part.
-
-
-.. image:: profile/flamegraph.svg
-
-
-.. _py-spy: https://github.com/benfred/py-spy
-
-.. _speedscope.app: https://www.speedscope.app/