Skip to content

Commit 8ec1c99

Browse files
committed
DOC: use sub-headings in enhancedperformance.rst
1 parent 3bf13ac commit 8ec1c99

File tree

1 file changed

+20
-14
lines changed

1 file changed

+20
-14
lines changed

doc/source/enhancingperf.rst

+20-14
Original file line numberDiff line numberDiff line change
@@ -311,7 +311,10 @@ Numba works by generating optimized machine code using the LLVM compiler infrast
311311

312312
As of ``numba`` version 0.20, pandas objects cannot be passed directly to numba-compiled functions. Instead, one must pass the ``numpy`` array underlying the ``pandas`` object to the numba-compiled function as demonstrated below.
313313

314-
We simply take the plain python code from above and annotate with the ``@jit`` decorator.
314+
jit
315+
~~~
316+
317+
Using ``numba`` to just-in-time compile your code. We simply take the plain python code from above and annotate with the ``@jit`` decorator.
315318

316319
.. code-block:: python
317320
@@ -349,41 +352,44 @@ Note that we directly pass ``numpy`` arrays to the numba function. ``compute_num
349352
In [4]: %timeit compute_numba(df)
350353
1000 loops, best of 3: 798 us per loop
351354
352-
``numba`` can also be used to write vectorized functions that do not require the user to explicitly
353-
loop over the observations of a vector; a vectorized function will be applied to each row automatically.
354-
Consider the following toy example of doubling each observation:
355+
vectorize
356+
~~~~~~~~~
357+
358+
``numba`` can also be used to write vectorized functions that do not require the user to explicitly
359+
loop over the observations of a vector; a vectorized function will be applied to each row automatically.
360+
Consider the following toy example of doubling each observation:
355361

356362
.. code-block:: python
357363
358364
import numba
359-
365+
360366
def double_every_value_nonumba(x):
361367
return x*2
362-
368+
363369
@numba.vectorize
364370
def double_every_value_withnumba(x):
365371
return x*2
366-
367-
368-
# Custom function without numba
372+
373+
374+
# Custom function without numba
369375
In [5]: %timeit df['col1_doubled'] = df.a.apply(double_every_value_nonumba)
370376
1000 loops, best of 3: 797 us per loop
371-
377+
372378
# Standard implementation (faster than a custom function)
373379
In [6]: %timeit df['col1_doubled'] = df.a*2
374380
1000 loops, best of 3: 233 us per loop
375-
381+
376382
# Custom function with numba
377383
In [7]: %timeit df['col1_doubled'] = double_every_value_withnumba(df.a.values)
378384
1000 loops, best of 3: 145 us per loop
379385
380386
.. note::
381387

382-
``numba`` will execute on any function, but can only accelerate certain classes of functions.
388+
``numba`` will execute on any function, but can only accelerate certain classes of functions.
383389

384-
``numba`` is best at accelerating functions that apply numerical functions to numpy arrays. When passed a function that only uses operations it knows how to accelerate, it will execute in ``nopython`` mode.
390+
``numba`` is best at accelerating functions that apply numerical functions to numpy arrays. When passed a function that only uses operations it knows how to accelerate, it will execute in ``nopython`` mode.
385391

386-
If ``numba`` is passed a function that includes something it doesn't know how to work with -- a category that currently includes sets, lists, dictionaries, or string functions -- it will revert to ``object mode``. In ``object mode``, numba will execute but your code will not speed up significantly. If you would prefer that ``numba`` throw an error if it cannot compile a function in a way that speeds up your code, pass numba the argument ``nopython=True`` (e.g. ``@numba.jit(nopython=True)``). For more on troubleshooting ``numba`` modes, see the `numba troubleshooting page <http://numba.pydata.org/numba-doc/0.20.0/user/troubleshoot.html#the-compiled-code-is-too-slow>`__.
392+
If ``numba`` is passed a function that includes something it doesn't know how to work with -- a category that currently includes sets, lists, dictionaries, or string functions -- it will revert to ``object mode``. In ``object mode``, numba will execute but your code will not speed up significantly. If you would prefer that ``numba`` throw an error if it cannot compile a function in a way that speeds up your code, pass numba the argument ``nopython=True`` (e.g. ``@numba.jit(nopython=True)``). For more on troubleshooting ``numba`` modes, see the `numba troubleshooting page <http://numba.pydata.org/numba-doc/0.20.0/user/troubleshoot.html#the-compiled-code-is-too-slow>`__.
387393

388394
Read more in the `numba docs <http://numba.pydata.org/>`__.
389395

0 commit comments

Comments
 (0)