diff --git a/docs/contrib/index.rst b/docs/contrib/index.rst index 5ddac2a..cb881c5 100644 --- a/docs/contrib/index.rst +++ b/docs/contrib/index.rst @@ -12,5 +12,6 @@ Contents: flow loop multi + profile sequences walk diff --git a/docs/contrib/profile.rst b/docs/contrib/profile.rst new file mode 100644 index 0000000..6edbd34 --- /dev/null +++ b/docs/contrib/profile.rst @@ -0,0 +1,57 @@ +========== +Profile +========== + +.. versionadded:: 0.10.0 + +The ``profile`` macros make it easier to find bottlenecks. + + +Macros +====== + +.. _profile/calls: +.. _profile/cpu: + +profile/calls +-------------- + +``profile/calls`` allows you to create a call graph visualization. +**Note:** You must have `Graphviz `_ +installed for this to work. + + +Usage: `(profile/calls (body))` + +Example: + +.. code-block:: hy + + (require [hy.contrib.profile [profile/calls]]) + (profile/calls (print "hey there")) + + +profile/cpu +------------ + +``profile/cpu`` allows you to profile a bit of code. + +Usage: `(profile/cpu (body))` + +Example: + +.. code-block:: hy + + (require [hy.contrib.profile [profile/cpu]]) + (profile/cpu (print "hey there")) + +.. code-block:: bash + + hey there + + 2 function calls in 0.000 seconds + + Random listing order was used + + ncalls tottime percall cumtime percall filename:lineno(function) 1 0.000 0.000 0.000 0.000 {method 'disable' of '_lsprof.Profiler' objects} + 1 0.000 0.000 0.000 0.000 {print}