26 lines
830 B
Markdown
26 lines
830 B
Markdown
|
# Timings of CPython Operations
|
||
|
|
||
|
Here are some *very rough* approximate timings of CPython interpreter
|
||
|
operations:
|
||
|
|
||
|
* `f(1)` (empty function body): 70-90ns
|
||
|
* `f(n=1)` (empty function body): 90-110ns
|
||
|
* `o.x`: 30-40ns
|
||
|
* `o.f(1)` (empty method body): 80-160ns
|
||
|
* `Cls(1)` (initialize attribute in `__init__`): 290-330ns
|
||
|
* `x + y` (integers): 20-35ns
|
||
|
* `a[i]` (list) : 20-40ns
|
||
|
* `[i]` (also dealloc): 35-55ns
|
||
|
* `a.append(i)` (list, average over 5 appends): 70ns
|
||
|
* `d[s]` (dict, shared str key): 20ns
|
||
|
* `d[s] = i` (dict, shared str key): 40ns
|
||
|
* `isinstance(x, A)`: 100ns
|
||
|
* `(x, y)`: 20-35ns
|
||
|
* `x, y = t` (tuple expand): 10ns
|
||
|
|
||
|
Note that these results are very imprecise due to many factors, but
|
||
|
these should give a rough idea of the relative costs of various
|
||
|
operations.
|
||
|
|
||
|
Details: CPython 3.6.2, Macbook Pro 15" (Mid 2015), macOS Sierra
|