Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

block mutation of read-only array in series #14359

Closed
wants to merge 1 commit into from

Conversation

llllllllll
Copy link
Contributor

  • tests added / passed
  • passes git diff upstream/master | flake8 --diff
  • whatsnew entry

reproduction case:

In [1]: array = np.array([1, 2, 3])

In [2]: array.flags.writeable = False

In [3]: series = pd.Series(array)

In [4]: series[0] = -1

In [5]: series
Out[5]: 
0   -1
1    2
2    3
dtype: int64

In [6]: array
Out[6]: array([-1,  2,  3])

In the case I was running into I was passing a numpy.memmap which is a subclass of ndarray but was over a read only memory segment so attempting the setitem was causing a segfault. The new behavior matches the numpy behavior:

In [4]: series[0] = -1
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-5-2ad0997d5cf2> in <module>()
----> 1 series[0] = -1
   ...
ValueError: assignment destination is read-only

In [5]: array[0] = -1
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-7-f67d1d011a13> in <module>()
----> 1 array[0] = -1

ValueError: assignment destination is read-only

@llllllllll
Copy link
Contributor Author

regarding the travis failure: do you cache the compilation accross the runs? I noticed that I needed to ensure that the .so and .c was removed because for some reason the .pyd was not treated as a dependency that required recompilation.

@chris-b1
Copy link
Contributor

chris-b1 commented Oct 6, 2016

Here's the PR where caching was added/modified
#13526

I don't really know how it works, but it doesn't seem to check .pxd files which would explain your issue.

@chris-b1
Copy link
Contributor

chris-b1 commented Oct 6, 2016

Working on this in #14363

@@ -79,3 +79,6 @@ Performance Improvements

Bug Fixes
~~~~~~~~~

- Bug in ``Series.__setitem__`` which allowed mutating arrays read-only arrays
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

move to 0.19.1

@@ -59,6 +59,10 @@ cdef inline object get_value_at(ndarray arr, object loc):
cdef inline set_value_at(ndarray arr, object loc, object value):
cdef:
Py_ssize_t i, sz

if not cnp.PyArray_ISWRITEABLE(arr):
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this needs to be in the dependency chain in setup.py (for all cython extesnsion, though you could make more fine-grained if you want)

@@ -59,6 +59,10 @@ cdef inline object get_value_at(ndarray arr, object loc):
cdef inline set_value_at(ndarray arr, object loc, object value):
cdef:
Py_ssize_t i, sz

if not cnp.PyArray_ISWRITEABLE(arr):
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This might actuallly be a performance hit. This routines is called in a lot of places. can you do some simple tests.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I might put this at a higher level with a single check per-array (and not on an individual set, even though that is technically more correct).

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sure, I will profile this to see. There is a lot of python code happening in __setitem__ so I think that will drown the hit here. This is just a macro that does a bitwise and on the flags so the real cost is dereferencing the array, but we need to do that later in the function anyways.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It looks like this may actually be slowing things down slightly. I will see if I can make up that time somewhere else. If we cache at a per-array level then what should be do if someone changes the flags on the underlying array between setitem calls?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Okay, I profiled __setitem__ to see if I could make back the time I was adding to the write, I think I have come up with something reasonable here. My changes remove a getattr and a builtin lookup which were measurable amounts of the call times. I confimed that with cProfile and line_profile and tested my changes with perf.

master

........................................
Metadata:
- aslr: Full randomization
- boot_time: 2016-10-03T11:28:53
- cpu_config: 0-3=driver:intel_pstate, intel_pstate:turbo, governor:powersave; idle:intel_idle
- cpu_count: 4
- cpu_model_name: Intel(R) Core(TM) i7-5600U CPU @ 2.60GHz
- hostname: funami
- loops: 2^15
- name: timeit
- perf_version: 0.7.12
- platform: Linux-4.7.5-1-ARCH-x86_64-with-arch
- python_cflags: -Wno-unused-result -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes
- python_executable: /home/yui/.virtualenvs/databazaar/bin/python
- python_implementation: cpython
- python_version: 3.4.3 (64-bit) revision b4cbecbc0781
- timeit_setup: 'import pandas as pd;s = pd.Series([1, 2, 3])'
- timeit_stmt: 's[0] = 1'
- timer: clock_gettime(CLOCK_MONOTONIC), resolution: 1.00 ns

Run 1: warmup (36): 579 us (+13803%), 37.9 us (+812%), 18.1 us (+334%), 13.6 us (+227%), 10.9 us (+161%), 10.2 us (+145%), 8.81 us (+112%), 14.7 us (+253%), 6.76 us (+62%), 4.40 us (+6%), 4.21 us, 4.25 us, 4.44 us (+7%), 6.34 us (+52%), 4.01 us, 6.79 us (+63%), 4.37 us (+5%), 4.11 us, 4.64 us (+12%), 4.21 us, 4.08 us, 4.04 us, 4.11 us, 4.13 us, 4.08 us, 4.06 us, 4.09 us, 4.15 us, 4.12 us, 4.07 us, 4.13 us, 4.08 us, 4.09 us, 4.07 us, 4.10 us, 4.09 us; samples (50): 4.37 us (+5%), 4.72 us (+13%), 4.63 us (+11%), 4.13 us, 4.19 us, 4.11 us, 4.08 us, 4.06 us, 4.06 us, 4.08 us, 4.33 us, 4.74 us (+14%), 4.64 us (+12%), 4.15 us, 4.08 us, 4.07 us, 4.10 us, 4.16 us, 4.06 us, 4.10 us, 4.12 us, 4.15 us, 4.18 us, 4.12 us, 4.09 us, 4.12 us, 4.09 us, 4.20 us, 4.23 us, 4.17 us, 4.12 us, 4.19 us, 4.15 us, 4.19 us, 4.24 us, 4.18 us, 4.11 us, 4.05 us, 4.15 us, 4.05 us, 4.10 us, 4.08 us, 4.07 us, 4.07 us, 4.11 us, 4.09 us, 4.09 us, 4.07 us, 4.06 us, 4.13 us
Run 2: warmup (20): 3.98 us, 4.06 us, 4.10 us, 4.06 us, 4.09 us, 4.02 us, 4.07 us, 4.06 us, 4.06 us, 4.04 us, 4.08 us, 4.02 us, 4.07 us, 4.05 us, 4.07 us, 4.07 us, 4.07 us, 4.05 us, 4.00 us, 4.04 us; samples (50): 4.08 us, 4.04 us, 4.09 us, 4.10 us, 4.06 us, 4.07 us, 4.12 us, 4.12 us, 4.06 us, 4.08 us, 4.08 us, 4.10 us, 4.07 us, 4.07 us, 4.07 us, 4.04 us, 4.05 us, 4.10 us, 4.06 us, 4.01 us, 4.06 us, 4.07 us, 4.10 us, 4.11 us, 4.12 us, 4.11 us, 4.08 us, 4.12 us, 4.14 us, 4.14 us, 4.16 us, 4.13 us, 4.06 us, 4.07 us, 4.05 us, 4.08 us, 4.05 us, 4.06 us, 4.03 us, 4.05 us, 3.99 us, 4.06 us, 4.01 us, 4.04 us, 4.07 us, 4.13 us, 4.04 us, 4.04 us, 4.09 us, 4.03 us
Run 3: warmup (20): 4.06 us, 4.10 us, 4.19 us, 4.14 us, 4.12 us, 4.16 us, 4.07 us, 4.08 us, 4.17 us, 4.12 us, 4.11 us, 4.13 us, 4.12 us, 4.12 us, 4.09 us, 4.09 us, 4.10 us, 4.20 us, 4.10 us, 4.10 us; samples (50): 4.09 us, 4.09 us, 4.11 us, 4.10 us, 4.08 us, 4.10 us, 4.10 us, 4.08 us, 4.06 us, 4.12 us, 4.16 us, 4.12 us, 4.12 us, 4.19 us, 4.17 us, 4.13 us, 4.12 us, 4.14 us, 4.12 us, 4.08 us, 4.06 us, 4.14 us, 4.08 us, 4.10 us, 4.15 us, 4.14 us, 4.11 us, 4.19 us, 4.12 us, 4.16 us, 4.14 us, 4.13 us, 4.11 us, 4.09 us, 4.10 us, 4.14 us, 4.20 us, 4.10 us, 4.11 us, 4.10 us, 4.09 us, 4.11 us, 4.12 us, 4.08 us, 4.07 us, 4.07 us, 4.10 us, 4.08 us, 4.07 us, 4.11 us
Run 4: warmup (20): 3.99 us, 4.02 us, 4.07 us, 4.54 us (+9%), 5.09 us (+22%), 4.58 us (+10%), 3.99 us, 4.02 us, 3.96 us, 4.01 us, 4.03 us, 4.02 us, 4.01 us, 4.02 us, 4.02 us, 4.02 us, 4.13 us, 4.04 us, 4.72 us (+13%), 4.03 us; samples (50): 3.96 us, 4.01 us, 4.00 us, 3.97 us, 3.99 us, 4.01 us, 3.99 us, 3.98 us, 4.20 us, 4.01 us, 3.99 us, 4.00 us, 4.12 us, 4.00 us, 4.01 us, 3.97 us, 3.96 us, 4.04 us, 4.01 us, 4.02 us, 4.06 us, 4.00 us, 4.09 us, 4.79 us (+15%), 5.80 us (+39%), 6.24 us (+50%), 5.94 us (+43%), 5.88 us (+41%), 6.07 us (+46%), 5.93 us (+43%), 5.54 us (+33%), 5.78 us (+39%), 5.03 us (+21%), 4.87 us (+17%), 5.47 us (+31%), 6.10 us (+47%), 5.62 us (+35%), 4.84 us (+16%), 4.84 us (+16%), 4.72 us (+14%), 4.49 us (+8%), 5.38 us (+29%), 4.73 us (+14%), 4.88 us (+17%), 4.87 us (+17%), 4.98 us (+20%), 4.97 us (+19%), 5.20 us (+25%), 4.90 us (+18%), 5.97 us (+43%)
Run 5: warmup (20): 6.90 us (+66%), 5.43 us (+30%), 5.60 us (+35%), 5.76 us (+38%), 5.98 us (+44%), 5.64 us (+36%), 5.16 us (+24%), 4.36 us, 4.58 us (+10%), 4.41 us (+6%), 4.38 us (+5%), 4.32 us, 4.33 us, 4.34 us, 4.31 us, 4.37 us (+5%), 4.42 us (+6%), 4.33 us, 4.64 us (+12%), 5.09 us (+22%); samples (50): 4.55 us (+9%), 4.32 us, 4.30 us, 4.31 us, 4.33 us, 4.31 us, 4.19 us, 4.17 us, 4.31 us, 4.48 us (+8%), 4.29 us, 4.43 us (+7%), 4.33 us, 4.33 us, 4.31 us, 4.33 us, 4.40 us (+6%), 4.33 us, 4.75 us (+14%), 4.38 us (+5%), 4.31 us, 4.44 us (+7%), 4.36 us, 4.45 us (+7%), 4.33 us, 4.34 us, 4.28 us, 4.30 us, 4.46 us (+7%), 4.37 us (+5%), 4.32 us, 4.36 us, 4.33 us, 4.33 us, 4.37 us (+5%), 4.34 us, 4.16 us, 4.21 us, 4.25 us, 4.29 us, 4.22 us, 4.32 us, 4.36 us, 4.22 us, 4.18 us, 4.27 us, 4.24 us, 4.19 us, 4.12 us, 4.17 us
Run 6: warmup (20): 4.23 us, 4.25 us, 4.28 us, 4.21 us, 4.23 us, 4.23 us, 4.21 us, 4.25 us, 4.25 us, 4.24 us, 4.27 us, 4.20 us, 4.21 us, 4.25 us, 4.31 us, 4.21 us, 4.25 us, 4.21 us, 4.47 us (+8%), 4.27 us; samples (50): 4.26 us, 4.21 us, 4.87 us (+17%), 5.10 us (+22%), 4.32 us, 4.25 us, 4.22 us, 4.22 us, 4.21 us, 4.32 us, 4.19 us, 4.20 us, 4.27 us, 4.22 us, 4.26 us, 4.19 us, 4.18 us, 4.23 us, 4.20 us, 4.19 us, 4.22 us, 4.22 us, 4.26 us, 4.19 us, 4.23 us, 4.22 us, 4.18 us, 4.19 us, 4.19 us, 4.18 us, 4.21 us, 4.20 us, 4.17 us, 4.15 us, 4.17 us, 4.16 us, 4.20 us, 4.21 us, 4.23 us, 4.17 us, 4.21 us, 4.11 us, 4.18 us, 4.22 us, 4.16 us, 4.17 us, 4.15 us, 4.16 us, 4.17 us, 4.16 us
Run 7: warmup (20): 4.13 us, 4.12 us, 4.15 us, 4.24 us, 4.05 us, 4.70 us (+13%), 4.07 us, 4.07 us, 4.07 us, 4.04 us, 4.07 us, 4.09 us, 4.05 us, 4.10 us, 4.20 us, 4.09 us, 4.08 us, 4.13 us, 4.08 us, 4.07 us; samples (50): 4.08 us, 4.10 us, 4.07 us, 4.08 us, 4.07 us, 4.07 us, 4.10 us, 4.12 us, 4.13 us, 4.14 us, 4.05 us, 4.12 us, 4.11 us, 4.07 us, 4.14 us, 4.11 us, 4.11 us, 4.11 us, 4.12 us, 4.11 us, 4.70 us (+13%), 4.13 us, 4.09 us, 4.07 us, 4.21 us, 4.17 us, 4.19 us, 4.16 us, 4.15 us, 4.20 us, 4.19 us, 4.17 us, 4.17 us, 4.20 us, 4.18 us, 4.19 us, 4.15 us, 4.13 us, 4.12 us, 4.16 us, 4.10 us, 4.10 us, 4.11 us, 4.19 us, 4.53 us (+9%), 4.59 us (+10%), 4.10 us, 4.13 us, 4.08 us, 4.08 us
Run 8: warmup (20): 3.95 us (-5%), 4.01 us, 3.96 us, 3.91 us (-6%), 3.93 us (-6%), 3.90 us (-6%), 3.98 us, 3.93 us (-6%), 3.90 us (-6%), 3.92 us (-6%), 3.88 us (-7%), 3.94 us (-5%), 3.97 us, 3.93 us (-6%), 3.91 us (-6%), 3.91 us (-6%), 3.91 us (-6%), 3.96 us, 3.95 us (-5%), 3.94 us (-5%); samples (50): 3.98 us, 3.93 us (-6%), 3.93 us (-6%), 3.93 us (-6%), 3.89 us (-6%), 3.93 us (-6%), 3.95 us, 3.93 us (-6%), 3.88 us (-7%), 3.93 us (-6%), 3.94 us (-5%), 3.91 us (-6%), 3.92 us (-6%), 3.93 us (-6%), 3.97 us, 3.96 us, 3.99 us, 3.99 us, 3.94 us (-5%), 3.92 us (-6%), 3.99 us, 3.91 us (-6%), 3.95 us, 3.96 us, 3.96 us, 4.24 us, 3.99 us, 3.98 us, 3.96 us, 3.94 us (-5%), 3.95 us, 3.94 us (-5%), 3.96 us, 3.95 us (-5%), 3.96 us, 3.94 us (-5%), 3.93 us (-5%), 3.94 us (-5%), 3.90 us (-6%), 3.93 us (-6%), 4.36 us, 4.29 us, 3.91 us (-6%), 3.92 us (-6%), 4.02 us, 3.89 us (-6%), 3.92 us (-6%), 3.89 us (-7%), 3.86 us (-7%), 3.90 us (-6%)
Run 9: warmup (20): 4.09 us, 4.26 us, 4.38 us (+5%), 4.87 us (+17%), 4.72 us (+13%), 4.66 us (+12%), 4.67 us (+12%), 4.97 us (+19%), 5.02 us (+21%), 4.77 us (+15%), 4.73 us (+14%), 4.70 us (+13%), 4.79 us (+15%), 4.25 us, 4.19 us, 4.16 us, 4.29 us, 4.21 us, 4.20 us, 4.12 us; samples (50): 4.16 us, 4.72 us (+13%), 4.07 us, 4.15 us, 4.07 us, 4.11 us, 4.09 us, 4.44 us (+7%), 4.32 us, 4.12 us, 4.11 us, 4.09 us, 4.12 us, 4.03 us, 4.13 us, 4.20 us, 4.47 us (+7%), 4.17 us, 4.01 us, 4.07 us, 4.06 us, 4.06 us, 4.07 us, 4.12 us, 4.04 us, 4.35 us, 4.03 us, 4.11 us, 4.10 us, 4.21 us, 4.08 us, 4.05 us, 4.07 us, 4.05 us, 4.11 us, 4.07 us, 4.09 us, 4.03 us, 4.11 us, 4.08 us, 4.03 us, 4.08 us, 4.13 us, 4.11 us, 4.05 us, 4.06 us, 4.02 us, 4.12 us, 4.07 us, 4.10 us
Run 10: warmup (20): 4.06 us, 4.14 us, 4.18 us, 4.14 us, 4.11 us, 4.21 us, 4.15 us, 4.13 us, 4.10 us, 4.16 us, 4.16 us, 4.18 us, 4.18 us, 4.22 us, 4.24 us, 4.16 us, 4.20 us, 4.09 us, 4.11 us, 4.11 us; samples (50): 4.09 us, 4.12 us, 4.12 us, 4.10 us, 4.07 us, 4.12 us, 4.04 us, 4.12 us, 4.10 us, 4.11 us, 4.12 us, 4.08 us, 4.08 us, 4.15 us, 4.13 us, 4.07 us, 4.10 us, 4.12 us, 4.10 us, 4.12 us, 4.10 us, 4.17 us, 4.12 us, 4.11 us, 4.12 us, 4.15 us, 4.11 us, 4.13 us, 4.15 us, 4.14 us, 4.13 us, 4.13 us, 4.15 us, 4.14 us, 4.10 us, 4.07 us, 4.08 us, 4.09 us, 4.07 us, 4.07 us, 4.09 us, 4.09 us, 4.12 us, 4.10 us, 4.13 us, 4.09 us, 4.07 us, 4.06 us, 4.07 us, 4.07 us
Run 11: warmup (20): 3.88 us (-7%), 3.97 us, 4.02 us, 4.00 us, 4.03 us, 4.01 us, 4.02 us, 4.03 us, 5.91 us (+42%), 6.05 us (+45%), 5.71 us (+37%), 4.88 us (+17%), 5.08 us (+22%), 5.01 us (+20%), 5.24 us (+26%), 5.06 us (+22%), 5.07 us (+22%), 5.20 us (+25%), 5.20 us (+25%), 5.31 us (+28%); samples (50): 5.07 us (+22%), 5.15 us (+24%), 5.21 us (+25%), 5.15 us (+24%), 5.11 us (+23%), 4.90 us (+18%), 5.17 us (+24%), 5.52 us (+33%), 5.22 us (+25%), 5.31 us (+27%), 5.64 us (+36%), 5.26 us (+26%), 8.55 us (+105%), 6.71 us (+61%), 4.04 us, 4.32 us, 4.31 us, 4.19 us, 4.12 us, 4.08 us, 4.12 us, 4.30 us, 4.12 us, 4.17 us, 4.10 us, 4.08 us, 4.15 us, 4.08 us, 4.44 us (+7%), 4.52 us (+9%), 4.16 us, 4.09 us, 3.99 us, 3.97 us, 3.97 us, 4.01 us, 4.06 us, 3.95 us (-5%), 3.95 us (-5%), 3.99 us, 3.98 us, 3.98 us, 3.97 us, 3.96 us, 3.94 us (-5%), 3.91 us (-6%), 3.96 us, 3.93 us (-6%), 3.91 us (-6%), 3.94 us (-5%)
Run 12: warmup (20): 3.94 us (-5%), 4.06 us, 4.04 us, 4.05 us, 4.02 us, 4.09 us, 4.06 us, 4.02 us, 4.05 us, 4.00 us, 4.05 us, 4.51 us (+8%), 4.44 us (+7%), 4.05 us, 4.31 us, 4.57 us (+10%), 4.49 us (+8%), 4.23 us, 4.05 us, 4.00 us; samples (50): 4.06 us, 4.04 us, 4.00 us, 4.01 us, 4.04 us, 3.98 us, 4.01 us, 3.98 us, 4.07 us, 3.98 us, 4.00 us, 4.04 us, 4.00 us, 4.03 us, 3.99 us, 4.03 us, 3.96 us, 4.02 us, 3.98 us, 4.05 us, 4.01 us, 4.01 us, 3.98 us, 4.04 us, 3.97 us, 3.98 us, 4.06 us, 3.98 us, 4.03 us, 4.01 us, 4.07 us, 4.06 us, 4.05 us, 4.07 us, 4.01 us, 3.96 us, 4.04 us, 4.03 us, 4.08 us, 4.05 us, 4.01 us, 3.98 us, 4.01 us, 4.04 us, 4.01 us, 4.08 us, 4.03 us, 4.00 us, 4.02 us, 4.03 us
Run 13: warmup (20): 4.11 us, 4.22 us, 4.19 us, 4.20 us, 4.20 us, 4.17 us, 4.18 us, 4.19 us, 4.21 us, 4.14 us, 4.14 us, 4.19 us, 4.18 us, 4.21 us, 4.17 us, 4.17 us, 4.19 us, 4.16 us, 4.14 us, 4.12 us; samples (50): 4.17 us, 4.12 us, 4.10 us, 4.07 us, 4.07 us, 4.12 us, 4.16 us, 4.11 us, 4.08 us, 4.12 us, 4.14 us, 4.15 us, 4.16 us, 4.17 us, 4.17 us, 4.18 us, 4.15 us, 4.20 us, 4.11 us, 4.09 us, 4.10 us, 4.14 us, 4.16 us, 4.17 us, 4.16 us, 4.18 us, 4.10 us, 4.11 us, 4.09 us, 4.11 us, 4.08 us, 4.10 us, 4.10 us, 4.13 us, 4.14 us, 4.19 us, 4.20 us, 4.08 us, 4.21 us, 4.06 us, 4.07 us, 4.16 us, 4.16 us, 4.13 us, 4.18 us, 4.20 us, 4.18 us, 4.11 us, 4.12 us, 4.11 us
Run 14: warmup (20): 4.42 us (+6%), 4.45 us (+7%), 4.49 us (+8%), 4.47 us (+7%), 4.40 us (+6%), 4.46 us (+7%), 4.47 us (+7%), 4.45 us (+7%), 4.43 us (+7%), 4.41 us (+6%), 4.45 us (+7%), 4.47 us (+7%), 4.40 us (+6%), 4.43 us (+6%), 4.42 us (+6%), 4.49 us (+8%), 4.44 us (+7%), 4.40 us (+6%), 4.40 us (+6%), 4.37 us (+5%); samples (50): 4.38 us (+5%), 4.40 us (+6%), 4.34 us, 4.31 us, 4.41 us (+6%), 4.32 us, 4.41 us (+6%), 4.31 us, 4.29 us, 4.34 us, 4.37 us (+5%), 4.30 us, 4.30 us, 4.42 us (+6%), 4.42 us (+6%), 4.37 us (+5%), 4.41 us (+6%), 4.43 us (+6%), 4.38 us (+5%), 4.41 us (+6%), 4.43 us (+6%), 4.48 us (+8%), 4.45 us (+7%), 4.45 us (+7%), 4.47 us (+7%), 4.45 us (+7%), 4.37 us (+5%), 5.25 us (+26%), 5.45 us (+31%), 4.43 us (+6%), 4.54 us (+9%), 4.63 us (+11%), 4.38 us (+5%), 4.42 us (+6%), 4.43 us (+7%), 4.42 us (+6%), 4.44 us (+7%), 4.40 us (+6%), 4.41 us (+6%), 4.54 us (+9%), 4.42 us (+6%), 4.35 us, 4.42 us (+6%), 4.52 us (+9%), 4.46 us (+7%), 4.43 us (+7%), 4.44 us (+7%), 4.97 us (+19%), 4.43 us (+6%), 4.29 us
Run 15: warmup (20): 4.24 us, 4.25 us, 4.18 us, 4.22 us, 4.17 us, 4.25 us, 4.21 us, 4.30 us, 4.30 us, 4.29 us, 4.24 us, 4.40 us (+6%), 4.23 us, 4.28 us, 4.32 us, 4.28 us, 4.40 us (+6%), 4.30 us, 4.38 us (+5%), 4.27 us; samples (50): 4.29 us, 4.26 us, 4.30 us, 4.33 us, 4.24 us, 4.25 us, 4.26 us, 4.29 us, 4.29 us, 4.29 us, 4.38 us (+5%), 4.32 us, 4.32 us, 4.38 us (+5%), 4.28 us, 4.26 us, 4.30 us, 4.22 us, 4.26 us, 4.35 us, 4.28 us, 4.23 us, 4.23 us, 4.22 us, 4.27 us, 4.31 us, 4.25 us, 4.28 us, 4.27 us, 4.31 us, 4.30 us, 4.32 us, 4.28 us, 4.20 us, 4.26 us, 4.30 us, 4.20 us, 4.21 us, 4.19 us, 4.21 us, 4.24 us, 4.19 us, 4.26 us, 4.29 us, 4.25 us, 4.33 us, 4.28 us, 4.31 us, 4.41 us (+6%), 4.29 us
Run 16: warmup (20): 4.01 us, 4.10 us, 4.08 us, 4.07 us, 4.09 us, 4.09 us, 4.05 us, 4.13 us, 4.07 us, 4.06 us, 4.06 us, 4.00 us, 4.08 us, 4.10 us, 4.06 us, 4.08 us, 4.07 us, 4.24 us, 4.10 us, 4.08 us; samples (50): 4.06 us, 4.11 us, 4.08 us, 4.06 us, 4.08 us, 4.18 us, 4.15 us, 4.01 us, 4.05 us, 4.04 us, 4.05 us, 4.07 us, 4.05 us, 4.07 us, 4.12 us, 4.10 us, 4.06 us, 4.12 us, 4.05 us, 4.02 us, 4.05 us, 4.02 us, 4.09 us, 4.12 us, 4.17 us, 4.15 us, 4.17 us, 4.18 us, 4.23 us, 4.20 us, 4.16 us, 4.10 us, 4.10 us, 4.10 us, 4.21 us, 4.10 us, 4.11 us, 4.00 us, 3.98 us, 4.04 us, 3.98 us, 4.00 us, 4.10 us, 4.14 us, 4.05 us, 4.02 us, 4.00 us, 3.99 us, 3.97 us, 4.05 us
Run 17: warmup (20): 3.96 us, 4.08 us, 4.13 us, 4.13 us, 4.08 us, 4.13 us, 4.18 us, 4.12 us, 4.07 us, 4.13 us, 4.09 us, 4.19 us, 4.10 us, 4.13 us, 4.12 us, 4.10 us, 4.09 us, 4.09 us, 4.02 us, 4.03 us; samples (50): 4.05 us, 4.09 us, 4.06 us, 4.09 us, 4.10 us, 4.11 us, 4.15 us, 4.31 us, 4.14 us, 4.08 us, 4.07 us, 4.08 us, 4.41 us (+6%), 4.84 us (+16%), 4.92 us (+18%), 4.99 us (+20%), 4.07 us, 4.09 us, 4.06 us, 4.30 us, 4.98 us (+20%), 4.56 us (+10%), 4.21 us, 4.07 us, 4.04 us, 4.24 us, 6.99 us (+68%), 5.76 us (+38%), 5.55 us (+33%), 5.10 us (+22%), 5.21 us (+25%), 5.33 us (+28%), 5.16 us (+24%), 5.52 us (+33%), 6.22 us (+49%), 5.94 us (+43%), 5.71 us (+37%), 5.18 us (+24%), 5.26 us (+26%), 5.28 us (+27%), 5.17 us (+24%), 5.45 us (+31%), 5.23 us (+26%), 4.97 us (+19%), 5.39 us (+30%), 5.30 us (+27%), 5.15 us (+24%), 5.27 us (+27%), 5.44 us (+31%), 5.55 us (+33%)
Run 18: warmup (20): 5.94 us (+43%), 5.10 us (+23%), 5.29 us (+27%), 6.49 us (+56%), 5.07 us (+22%), 5.17 us (+24%), 5.20 us (+25%), 4.98 us (+20%), 4.63 us (+11%), 4.22 us, 4.24 us, 4.20 us, 4.21 us, 4.21 us, 4.21 us, 4.20 us, 4.20 us, 4.21 us, 4.19 us, 4.20 us; samples (50): 4.42 us (+6%), 5.17 us (+24%), 4.26 us, 4.19 us, 4.21 us, 4.22 us, 4.16 us, 4.17 us, 4.18 us, 4.18 us, 4.22 us, 4.21 us, 4.17 us, 4.19 us, 4.20 us, 4.15 us, 4.06 us, 4.19 us, 4.21 us, 4.21 us, 4.19 us, 4.19 us, 4.18 us, 4.17 us, 4.20 us, 4.19 us, 4.17 us, 4.25 us, 4.23 us, 4.97 us (+19%), 5.33 us (+28%), 4.20 us, 4.20 us, 4.21 us, 4.19 us, 4.19 us, 4.20 us, 4.19 us, 4.12 us, 4.20 us, 4.11 us, 4.22 us, 4.26 us, 4.20 us, 4.20 us, 4.16 us, 4.15 us, 4.14 us, 4.12 us, 4.15 us
Run 19: warmup (20): 3.95 us (-5%), 5.68 us (+36%), 4.10 us, 4.24 us, 3.99 us, 3.95 us, 3.97 us, 4.02 us, 3.98 us, 3.92 us (-6%), 3.96 us, 3.96 us, 3.93 us (-6%), 3.93 us (-5%), 3.92 us (-6%), 3.95 us (-5%), 3.96 us, 3.95 us (-5%), 3.91 us (-6%), 3.91 us (-6%); samples (50): 3.92 us (-6%), 3.90 us (-6%), 3.89 us (-6%), 3.88 us (-7%), 3.88 us (-7%), 3.91 us (-6%), 3.89 us (-6%), 3.90 us (-6%), 4.98 us (+20%), 3.97 us, 3.98 us, 3.92 us (-6%), 3.90 us (-6%), 3.90 us (-6%), 3.93 us (-6%), 3.99 us, 3.95 us (-5%), 4.18 us, 3.93 us (-5%), 4.43 us (+6%), 4.70 us (+13%), 4.24 us, 4.22 us, 4.29 us, 4.24 us, 4.26 us, 4.27 us, 4.02 us, 4.30 us, 4.07 us, 3.96 us, 4.13 us, 4.94 us (+19%), 4.33 us, 4.01 us, 4.00 us, 4.19 us, 4.58 us (+10%), 4.05 us, 4.00 us, 4.00 us, 3.96 us, 4.10 us, 4.10 us, 4.08 us, 4.14 us, 4.01 us, 4.62 us (+11%), 4.10 us, 4.12 us
Run 20: warmup (20): 5.35 us (+29%), 4.13 us, 4.78 us (+15%), 4.23 us, 4.19 us, 4.60 us (+11%), 4.22 us, 4.28 us, 4.09 us, 3.98 us, 3.94 us (-5%), 3.94 us (-5%), 3.95 us (-5%), 3.97 us, 3.95 us (-5%), 3.98 us, 3.94 us (-5%), 3.96 us, 4.00 us, 3.94 us (-5%); samples (50): 3.97 us, 3.95 us (-5%), 3.94 us (-5%), 3.98 us, 3.93 us (-5%), 4.00 us, 4.09 us, 3.93 us (-6%), 3.91 us (-6%), 3.96 us, 3.94 us (-5%), 3.93 us (-6%), 5.96 us (+43%), 5.13 us (+23%), 3.92 us (-6%), 3.95 us (-5%), 3.97 us, 4.00 us, 3.95 us (-5%), 4.00 us, 3.97 us, 3.98 us, 3.93 us (-5%), 3.98 us, 3.96 us, 3.97 us, 4.01 us, 3.99 us, 3.97 us, 3.98 us, 3.91 us (-6%), 3.87 us (-7%), 3.87 us (-7%), 3.89 us (-7%), 3.87 us (-7%), 3.88 us (-7%), 3.97 us, 3.91 us (-6%), 3.89 us (-7%), 3.88 us (-7%), 3.88 us (-7%), 3.87 us (-7%), 5.58 us (+34%), 5.65 us (+36%), 3.86 us (-7%), 3.93 us (-6%), 3.89 us (-6%), 3.87 us (-7%), 3.87 us (-7%), 3.90 us (-6%)
Run 21: warmup (20): 4.02 us, 4.12 us, 4.11 us, 4.09 us, 4.06 us, 4.10 us, 4.08 us, 4.05 us, 4.01 us, 4.04 us, 4.07 us, 4.13 us, 4.08 us, 4.16 us, 4.09 us, 4.07 us, 4.09 us, 4.10 us, 4.08 us, 4.07 us; samples (50): 4.06 us, 4.10 us, 4.12 us, 4.10 us, 4.13 us, 4.15 us, 4.12 us, 4.12 us, 4.36 us, 4.69 us (+13%), 4.35 us, 4.08 us, 4.44 us (+7%), 4.15 us, 4.06 us, 4.04 us, 4.09 us, 4.09 us, 4.29 us, 4.09 us, 4.06 us, 4.08 us, 4.09 us, 4.08 us, 4.10 us, 4.11 us, 4.07 us, 4.06 us, 4.05 us, 4.05 us, 4.11 us, 4.12 us, 4.03 us, 4.03 us, 4.07 us, 4.10 us, 4.02 us, 4.05 us, 4.00 us, 4.00 us, 4.00 us, 4.00 us, 4.02 us, 4.02 us, 3.99 us, 4.01 us, 4.07 us, 4.04 us, 4.03 us, 3.98 us
Run 22: warmup (20): 4.09 us, 4.13 us, 4.12 us, 4.60 us (+10%), 4.77 us (+15%), 5.14 us (+23%), 4.78 us (+15%), 4.96 us (+19%), 5.02 us (+21%), 5.42 us (+30%), 4.65 us (+12%), 4.70 us (+13%), 4.73 us (+14%), 4.10 us, 4.18 us, 4.08 us, 4.15 us, 4.52 us (+9%), 4.15 us, 4.52 us (+9%); samples (50): 4.08 us, 4.45 us (+7%), 4.12 us, 4.08 us, 4.23 us, 4.17 us, 4.10 us, 4.32 us, 4.15 us, 4.10 us, 4.09 us, 4.12 us, 4.12 us, 4.09 us, 4.12 us, 4.14 us, 4.11 us, 4.10 us, 4.15 us, 4.09 us, 4.12 us, 4.13 us, 4.10 us, 4.10 us, 4.10 us, 4.14 us, 4.07 us, 4.12 us, 4.09 us, 4.14 us, 4.13 us, 4.12 us, 4.10 us, 4.13 us, 4.12 us, 4.09 us, 4.11 us, 4.10 us, 4.09 us, 4.08 us, 4.05 us, 4.06 us, 4.08 us, 4.10 us, 4.09 us, 4.13 us, 4.05 us, 4.08 us, 4.09 us, 4.08 us
Run 23: warmup (20): 4.08 us, 4.11 us, 4.20 us, 4.15 us, 4.36 us, 4.33 us, 4.21 us, 4.07 us, 4.07 us, 4.07 us, 4.10 us, 4.12 us, 4.06 us, 4.17 us, 4.12 us, 4.09 us, 4.11 us, 4.02 us, 4.00 us, 4.01 us; samples (50): 3.99 us, 4.07 us, 4.01 us, 4.02 us, 4.06 us, 4.01 us, 4.06 us, 4.06 us, 4.16 us, 4.15 us, 4.12 us, 4.05 us, 4.05 us, 4.11 us, 4.17 us, 4.24 us, 4.14 us, 4.11 us, 4.11 us, 4.07 us, 4.10 us, 4.10 us, 4.08 us, 4.10 us, 4.12 us, 4.09 us, 4.08 us, 4.07 us, 4.09 us, 4.06 us, 4.08 us, 4.10 us, 4.11 us, 4.10 us, 4.14 us, 4.06 us, 4.12 us, 4.06 us, 4.03 us, 4.08 us, 4.06 us, 4.07 us, 4.10 us, 4.06 us, 4.09 us, 4.11 us, 4.08 us, 4.09 us, 4.10 us, 4.06 us
Run 24: warmup (20): 4.14 us, 4.13 us, 4.23 us, 4.15 us, 4.17 us, 4.20 us, 4.21 us, 4.17 us, 4.17 us, 4.25 us, 4.21 us, 4.71 us (+13%), 5.30 us (+27%), 5.08 us (+22%), 5.15 us (+24%), 6.00 us (+44%), 5.31 us (+28%), 4.85 us (+16%), 5.92 us (+42%), 6.52 us (+57%); samples (50): 5.60 us (+35%), 4.90 us (+18%), 5.00 us (+20%), 5.43 us (+31%), 5.86 us (+41%), 5.12 us (+23%), 4.95 us (+19%), 5.08 us (+22%), 4.97 us (+19%), 5.10 us (+23%), 5.34 us (+28%), 5.39 us (+30%), 6.41 us (+54%), 5.16 us (+24%), 5.29 us (+27%), 5.56 us (+34%), 4.37 us, 4.33 us, 4.32 us, 4.34 us, 4.34 us, 4.36 us, 4.97 us (+19%), 4.46 us (+7%), 4.33 us, 4.36 us, 4.39 us (+5%), 4.33 us, 4.91 us (+18%), 4.33 us, 4.28 us, 4.18 us, 4.21 us, 4.35 us, 4.25 us, 4.45 us (+7%), 4.16 us, 4.17 us, 4.17 us, 4.19 us, 4.19 us, 4.16 us, 4.15 us, 4.24 us, 4.24 us, 4.18 us, 4.24 us, 4.13 us, 4.28 us, 4.18 us
Run 25: warmup (20): 4.09 us, 4.14 us, 4.10 us, 4.11 us, 4.13 us, 4.12 us, 4.10 us, 4.10 us, 4.12 us, 4.08 us, 4.08 us, 4.10 us, 4.12 us, 4.09 us, 4.13 us, 4.11 us, 4.08 us, 4.09 us, 4.05 us, 4.08 us; samples (50): 4.10 us, 4.07 us, 4.11 us, 4.10 us, 4.12 us, 4.11 us, 4.11 us, 4.15 us, 4.07 us, 4.10 us, 4.08 us, 4.08 us, 4.05 us, 4.05 us, 4.06 us, 4.09 us, 4.12 us, 4.11 us, 4.10 us, 4.12 us, 4.11 us, 4.10 us, 4.13 us, 4.69 us (+13%), 6.03 us (+45%), 4.66 us (+12%), 4.16 us, 4.14 us, 4.12 us, 4.13 us, 4.10 us, 4.12 us, 4.09 us, 4.08 us, 4.09 us, 4.11 us, 5.98 us (+44%), 6.57 us (+58%), 5.00 us (+20%), 4.15 us, 4.08 us, 4.12 us, 4.13 us, 4.14 us, 4.13 us, 4.09 us, 4.06 us, 4.08 us, 4.08 us, 4.10 us
Run 26: warmup (20): 4.19 us, 4.23 us, 4.22 us, 4.23 us, 4.24 us, 4.21 us, 4.41 us (+6%), 4.49 us (+8%), 4.21 us, 4.23 us, 4.26 us, 4.24 us, 4.19 us, 4.25 us, 4.19 us, 4.22 us, 4.18 us, 4.25 us, 4.17 us, 4.13 us; samples (50): 4.15 us, 4.17 us, 4.14 us, 4.22 us, 4.15 us, 4.21 us, 4.17 us, 4.20 us, 4.22 us, 4.19 us, 4.17 us, 4.17 us, 4.15 us, 4.24 us, 4.20 us, 4.20 us, 4.18 us, 4.24 us, 4.18 us, 4.25 us, 5.86 us (+41%), 6.70 us (+61%), 5.53 us (+33%), 4.16 us, 4.19 us, 4.19 us, 4.19 us, 4.24 us, 4.17 us, 4.18 us, 4.18 us, 4.25 us, 4.21 us, 4.22 us, 4.21 us, 4.16 us, 4.19 us, 4.16 us, 4.17 us, 4.12 us, 4.15 us, 4.18 us, 4.18 us, 4.18 us, 4.23 us, 4.16 us, 4.29 us, 4.16 us, 4.20 us, 4.20 us
Run 27: warmup (20): 4.53 us (+9%), 4.38 us (+5%), 4.21 us, 4.22 us, 4.10 us, 4.09 us, 4.12 us, 4.07 us, 4.12 us, 4.09 us, 4.09 us, 4.43 us (+6%), 4.44 us (+7%), 4.15 us, 4.17 us, 4.15 us, 4.12 us, 4.35 us, 4.51 us (+8%), 4.32 us; samples (50): 4.12 us, 4.09 us, 4.19 us, 4.25 us, 4.13 us, 4.15 us, 4.17 us, 4.18 us, 4.16 us, 4.16 us, 4.16 us, 4.35 us, 4.24 us, 4.90 us (+18%), 4.15 us, 4.16 us, 4.10 us, 4.21 us, 5.43 us (+31%), 6.56 us (+58%), 4.56 us (+9%), 4.16 us, 4.15 us, 4.19 us, 4.14 us, 4.14 us, 4.10 us, 4.17 us, 4.15 us, 4.22 us, 4.26 us, 4.21 us, 6.23 us (+50%), 6.26 us (+50%), 4.14 us, 4.26 us, 4.18 us, 4.17 us, 4.13 us, 4.08 us, 4.06 us, 4.06 us, 4.09 us, 4.02 us, 4.13 us, 4.11 us, 4.11 us, 4.12 us, 4.09 us, 4.07 us
Run 28: warmup (20): 4.18 us, 4.21 us, 4.23 us, 4.25 us, 4.42 us (+6%), 4.29 us, 4.30 us, 4.26 us, 4.30 us, 4.31 us, 4.30 us, 4.25 us, 4.20 us, 4.19 us, 4.19 us, 4.21 us, 4.42 us (+6%), 4.22 us, 4.53 us (+9%), 4.16 us; samples (50): 4.22 us, 4.19 us, 4.18 us, 4.17 us, 4.24 us, 4.83 us (+16%), 4.47 us (+7%), 4.18 us, 4.18 us, 4.22 us, 4.22 us, 4.14 us, 4.65 us (+12%), 4.16 us, 4.18 us, 4.17 us, 4.18 us, 4.15 us, 4.17 us, 4.17 us, 4.16 us, 4.16 us, 4.16 us, 4.17 us, 4.13 us, 4.21 us, 4.16 us, 4.24 us, 4.10 us, 4.71 us (+13%), 4.94 us (+19%), 4.33 us, 4.26 us, 4.32 us, 4.16 us, 4.10 us, 4.18 us, 4.28 us, 4.15 us, 4.12 us, 4.15 us, 4.12 us, 4.10 us, 4.16 us, 4.28 us, 4.26 us, 4.15 us, 4.12 us, 4.47 us (+7%), 4.69 us (+13%)
Run 29: warmup (20): 4.05 us, 4.11 us, 4.05 us, 4.02 us, 4.01 us, 4.00 us, 4.05 us, 4.07 us, 4.07 us, 4.07 us, 4.23 us, 4.04 us, 4.03 us, 4.06 us, 4.07 us, 4.09 us, 4.04 us, 4.05 us, 4.08 us, 4.05 us; samples (50): 4.05 us, 4.01 us, 4.06 us, 4.06 us, 4.06 us, 4.05 us, 4.04 us, 4.06 us, 4.03 us, 4.08 us, 4.04 us, 4.05 us, 4.05 us, 4.00 us, 4.07 us, 4.01 us, 4.00 us, 3.97 us, 4.04 us, 3.97 us, 3.97 us, 3.94 us (-5%), 4.16 us, 4.26 us, 4.17 us, 3.99 us, 4.03 us, 4.11 us, 4.10 us, 4.10 us, 4.18 us, 4.06 us, 4.02 us, 4.03 us, 4.04 us, 4.04 us, 3.95 us (-5%), 3.94 us (-5%), 3.95 us (-5%), 3.94 us (-5%), 3.98 us, 3.94 us (-5%), 3.94 us (-5%), 3.97 us, 4.01 us, 3.94 us (-5%), 4.00 us, 4.03 us, 3.98 us, 4.00 us
Run 30: warmup (20): 4.16 us, 4.20 us, 4.16 us, 4.26 us, 4.15 us, 4.16 us, 4.20 us, 4.27 us, 4.15 us, 4.20 us, 4.15 us, 4.16 us, 4.12 us, 4.14 us, 4.24 us, 4.26 us, 4.20 us, 4.30 us, 4.96 us (+19%), 4.41 us (+6%); samples (50): 4.23 us, 4.16 us, 4.21 us, 4.25 us, 4.32 us, 5.44 us (+31%), 5.21 us (+25%), 5.07 us (+22%), 7.74 us (+86%), 4.20 us, 4.16 us, 4.24 us, 4.22 us, 4.27 us, 4.16 us, 4.18 us, 4.14 us, 4.10 us, 4.09 us, 4.18 us, 4.19 us, 4.23 us, 4.17 us, 4.77 us (+15%), 5.01 us (+20%), 7.23 us (+74%), 5.17 us (+24%), 4.98 us (+20%), 5.61 us (+35%), 6.96 us (+67%), 6.23 us (+50%), 5.05 us (+21%), 5.18 us (+25%), 5.10 us (+23%), 6.35 us (+53%), 5.06 us (+22%), 5.23 us (+26%), 5.07 us (+22%), 5.07 us (+22%), 5.32 us (+28%), 5.12 us (+23%), 5.26 us (+26%), 5.17 us (+24%), 6.21 us (+49%), 5.41 us (+30%), 5.07 us (+22%), 6.64 us (+60%), 6.62 us (+59%), 5.30 us (+27%), 5.25 us (+26%)
Run 31: warmup (20): 5.82 us (+40%), 5.96 us (+43%), 5.49 us (+32%), 5.65 us (+36%), 5.76 us (+38%), 4.75 us (+14%), 4.46 us (+7%), 4.41 us (+6%), 4.37 us, 4.37 us (+5%), 4.41 us (+6%), 4.39 us (+6%), 4.40 us (+6%), 4.42 us (+6%), 4.35 us, 4.42 us (+6%), 4.35 us, 4.34 us, 4.29 us, 4.47 us (+7%); samples (50): 4.29 us, 4.31 us, 4.39 us (+5%), 4.92 us (+18%), 4.53 us (+9%), 4.41 us (+6%), 4.37 us (+5%), 4.44 us (+7%), 4.46 us (+7%), 4.71 us (+13%), 4.97 us (+19%), 4.39 us (+6%), 4.31 us, 4.31 us, 4.25 us, 4.28 us, 5.03 us (+21%), 4.39 us (+5%), 4.27 us, 4.34 us, 4.32 us, 4.32 us, 4.51 us (+8%), 4.45 us (+7%), 5.08 us (+22%), 4.71 us (+13%), 4.64 us (+11%), 4.32 us, 4.36 us, 8.54 us (+105%), 8.24 us (+98%), 6.47 us (+55%), 4.90 us (+18%), 4.53 us (+9%), 4.50 us (+8%), 4.32 us, 4.47 us (+7%), 4.35 us, 4.43 us (+6%), 5.37 us (+29%), 4.61 us (+11%), 4.38 us (+5%), 4.32 us, 5.23 us (+26%), 5.66 us (+36%), 7.15 us (+72%), 9.15 us (+120%), 5.28 us (+27%), 8.12 us (+95%), 8.83 us (+112%)
Run 32: warmup (20): 5.00 us (+20%), 4.65 us (+12%), 4.31 us, 4.30 us, 5.78 us (+39%), 4.48 us (+8%), 4.74 us (+14%), 4.84 us (+16%), 4.42 us (+6%), 4.66 us (+12%), 4.33 us, 4.24 us, 4.17 us, 4.24 us, 6.27 us (+51%), 5.14 us (+24%), 4.96 us (+19%), 4.65 us (+12%), 5.72 us (+37%), 5.40 us (+30%); samples (50): 5.17 us (+24%), 8.48 us (+104%), 8.12 us (+95%), 4.50 us (+8%), 4.34 us, 4.16 us, 4.18 us, 4.13 us, 4.21 us, 4.20 us, 4.16 us, 4.24 us, 4.16 us, 4.21 us, 4.23 us, 4.15 us, 4.20 us, 4.25 us, 4.18 us, 4.24 us, 4.17 us, 4.28 us, 4.18 us, 4.21 us, 4.25 us, 4.23 us, 4.18 us, 4.34 us, 4.27 us, 4.32 us, 4.15 us, 4.19 us, 4.14 us, 4.18 us, 4.14 us, 4.16 us, 4.21 us, 4.15 us, 4.15 us, 4.18 us, 4.17 us, 4.18 us, 4.08 us, 4.91 us (+18%), 6.70 us (+61%), 5.54 us (+33%), 4.15 us, 4.11 us, 4.15 us, 4.14 us
Run 33: warmup (20): 4.85 us (+17%), 4.83 us (+16%), 4.88 us (+17%), 4.98 us (+20%), 4.94 us (+19%), 4.79 us (+15%), 4.87 us (+17%), 4.78 us (+15%), 4.73 us (+14%), 5.14 us (+23%), 4.82 us (+16%), 4.79 us (+15%), 4.76 us (+14%), 4.77 us (+15%), 4.84 us (+16%), 4.76 us (+14%), 4.67 us (+12%), 4.78 us (+15%), 4.82 us (+16%), 4.86 us (+17%); samples (50): 4.81 us (+16%), 4.85 us (+17%), 4.90 us (+18%), 4.86 us (+17%), 4.91 us (+18%), 5.03 us (+21%), 5.07 us (+22%), 4.74 us (+14%), 4.76 us (+14%), 4.85 us (+16%), 4.73 us (+14%), 4.76 us (+14%), 4.70 us (+13%), 4.79 us (+15%), 4.72 us (+14%), 4.69 us (+13%), 4.71 us (+13%), 4.72 us (+13%), 4.73 us (+14%), 4.68 us (+12%), 4.74 us (+14%), 4.76 us (+14%), 4.76 us (+14%), 4.71 us (+13%), 4.73 us (+14%), 4.73 us (+14%), 4.73 us (+14%), 4.70 us (+13%), 4.68 us (+12%), 4.68 us (+12%), 4.91 us (+18%), 4.88 us (+17%), 4.76 us (+14%), 4.73 us (+14%), 4.70 us (+13%), 4.70 us (+13%), 5.08 us (+22%), 4.69 us (+13%), 4.69 us (+13%), 4.67 us (+12%), 4.65 us (+12%), 4.68 us (+13%), 4.66 us (+12%), 4.72 us (+13%), 4.96 us (+19%), 4.66 us (+12%), 4.71 us (+13%), 4.77 us (+15%), 4.78 us (+15%), 4.71 us (+13%)
Run 34: warmup (20): 4.78 us (+15%), 4.94 us (+19%), 4.85 us (+17%), 4.79 us (+15%), 5.00 us (+20%), 4.84 us (+16%), 5.25 us (+26%), 5.12 us (+23%), 4.86 us (+17%), 4.93 us (+18%), 4.91 us (+18%), 4.80 us (+15%), 4.85 us (+17%), 4.94 us (+19%), 4.75 us (+14%), 4.79 us (+15%), 4.72 us (+13%), 4.73 us (+14%), 4.72 us (+13%), 4.69 us (+13%); samples (50): 4.70 us (+13%), 4.83 us (+16%), 4.67 us (+12%), 4.68 us (+13%), 4.77 us (+15%), 5.28 us (+27%), 5.01 us (+20%), 4.70 us (+13%), 4.69 us (+13%), 4.75 us (+14%), 4.68 us (+12%), 4.73 us (+14%), 4.71 us (+13%), 4.68 us (+12%), 4.70 us (+13%), 4.80 us (+15%), 4.71 us (+13%), 4.73 us (+14%), 4.74 us (+14%), 4.65 us (+12%), 4.72 us (+14%), 4.72 us (+13%), 4.77 us (+15%), 4.75 us (+14%), 4.83 us (+16%), 4.71 us (+13%), 4.78 us (+15%), 4.69 us (+13%), 4.76 us (+14%), 4.76 us (+14%), 4.75 us (+14%), 4.84 us (+16%), 4.78 us (+15%), 4.73 us (+14%), 4.74 us (+14%), 4.72 us (+14%), 4.78 us (+15%), 4.70 us (+13%), 4.72 us (+13%), 4.70 us (+13%), 4.75 us (+14%), 4.72 us (+13%), 4.75 us (+14%), 4.74 us (+14%), 4.75 us (+14%), 4.72 us (+13%), 4.70 us (+13%), 4.71 us (+13%), 4.71 us (+13%), 4.72 us (+13%)
Run 35: warmup (20): 3.95 us (-5%), 4.15 us, 4.48 us (+8%), 4.64 us (+12%), 4.17 us, 4.17 us, 4.24 us, 4.14 us, 4.27 us, 4.66 us (+12%), 4.06 us, 3.98 us, 3.90 us (-6%), 4.06 us, 5.36 us (+29%), 4.50 us (+8%), 3.98 us, 4.13 us, 4.00 us, 3.97 us; samples (50): 3.94 us (-5%), 3.93 us (-6%), 4.00 us, 4.02 us, 4.06 us, 3.99 us, 4.03 us, 4.00 us, 4.01 us, 4.01 us, 4.03 us, 3.99 us, 4.00 us, 4.07 us, 4.05 us, 4.02 us, 4.04 us, 3.96 us, 3.99 us, 4.00 us, 3.99 us, 4.01 us, 3.99 us, 3.96 us, 3.99 us, 3.95 us (-5%), 3.93 us (-6%), 3.92 us (-6%), 4.01 us, 4.00 us, 3.93 us (-6%), 3.98 us, 3.95 us, 3.99 us, 3.93 us (-6%), 4.02 us, 4.37 us (+5%), 4.10 us, 4.15 us, 4.11 us, 4.08 us, 4.14 us, 4.06 us, 4.12 us, 4.31 us, 4.11 us, 4.03 us, 4.01 us, 4.00 us, 4.04 us
Run 36: warmup (20): 4.89 us (+17%), 4.21 us, 4.29 us, 4.26 us, 4.25 us, 4.21 us, 4.26 us, 4.22 us, 4.17 us, 4.19 us, 4.16 us, 4.20 us, 4.14 us, 4.55 us (+9%), 4.63 us (+11%), 4.33 us, 4.20 us, 4.15 us, 4.15 us, 4.13 us; samples (50): 4.19 us, 5.19 us (+25%), 4.43 us (+6%), 4.37 us, 4.21 us, 4.18 us, 4.17 us, 4.09 us, 4.23 us, 4.25 us, 4.14 us, 4.33 us, 4.60 us (+10%), 4.18 us, 4.23 us, 4.30 us, 4.28 us, 4.15 us, 5.12 us (+23%), 5.57 us (+34%), 6.00 us (+44%), 5.58 us (+34%), 6.27 us (+51%), 7.99 us (+92%), 5.60 us (+35%), 6.21 us (+49%), 6.34 us (+52%), 5.02 us (+21%), 6.13 us (+47%), 4.96 us (+19%), 5.16 us (+24%), 5.15 us (+24%), 5.00 us (+20%), 4.98 us (+20%), 5.10 us (+23%), 5.50 us (+32%), 6.25 us (+50%), 5.10 us (+23%), 4.94 us (+19%), 5.11 us (+23%), 7.11 us (+71%), 5.35 us (+29%), 5.29 us (+27%), 4.94 us (+19%), 5.26 us (+26%), 6.18 us (+49%), 5.52 us (+33%), 5.01 us (+20%), 5.11 us (+23%), 5.13 us (+23%)
Run 37: warmup (20): 5.23 us (+26%), 4.72 us (+13%), 4.23 us, 4.16 us, 4.18 us, 4.17 us, 4.16 us, 4.22 us, 4.20 us, 4.22 us, 4.24 us, 4.80 us (+15%), 4.47 us (+7%), 4.24 us, 4.85 us (+17%), 4.26 us, 4.40 us (+6%), 4.25 us, 4.26 us, 4.15 us; samples (50): 4.12 us, 4.16 us, 4.15 us, 4.13 us, 4.12 us, 4.15 us, 4.12 us, 4.13 us, 4.11 us, 4.09 us, 4.11 us, 4.16 us, 4.15 us, 4.09 us, 4.07 us, 4.10 us, 4.14 us, 4.18 us, 4.16 us, 4.16 us, 4.11 us, 4.17 us, 4.18 us, 4.19 us, 4.23 us, 4.12 us, 4.18 us, 4.13 us, 4.19 us, 4.39 us (+5%), 4.18 us, 4.17 us, 4.29 us, 4.95 us (+19%), 4.44 us (+7%), 4.20 us, 4.43 us (+7%), 4.48 us (+8%), 4.17 us, 4.19 us, 4.17 us, 4.23 us, 4.30 us, 4.25 us, 4.24 us, 4.22 us, 4.28 us, 4.29 us, 4.27 us, 4.20 us
Run 38: warmup (20): 4.28 us, 4.34 us, 4.33 us, 4.31 us, 4.33 us, 4.29 us, 4.38 us (+5%), 4.29 us, 4.22 us, 4.28 us, 4.31 us, 4.44 us (+7%), 4.75 us (+14%), 4.46 us (+7%), 4.29 us, 4.34 us, 4.52 us (+9%), 4.30 us, 4.28 us, 4.30 us; samples (50): 4.26 us, 4.27 us, 4.47 us (+7%), 4.28 us, 4.27 us, 4.28 us, 4.28 us, 4.33 us, 4.22 us, 4.30 us, 4.29 us, 4.27 us, 4.28 us, 4.30 us, 4.28 us, 4.52 us (+9%), 4.26 us, 4.31 us, 4.28 us, 4.30 us, 4.28 us, 4.34 us, 4.30 us, 4.31 us, 4.34 us, 4.34 us, 4.34 us, 4.37 us (+5%), 4.39 us (+6%), 4.34 us, 4.37 us (+5%), 4.87 us (+17%), 4.29 us, 4.27 us, 4.26 us, 4.29 us, 4.28 us, 4.36 us, 4.28 us, 4.28 us, 4.30 us, 4.28 us, 4.28 us, 4.25 us, 4.22 us, 4.22 us, 4.23 us, 4.23 us, 4.20 us, 4.20 us
Run 39: warmup (20): 4.37 us (+5%), 4.45 us (+7%), 4.41 us (+6%), 4.46 us (+7%), 4.45 us (+7%), 4.48 us (+8%), 4.44 us (+7%), 4.38 us (+5%), 4.42 us (+6%), 4.45 us (+7%), 4.48 us (+8%), 4.46 us (+7%), 4.44 us (+7%), 4.44 us (+7%), 4.41 us (+6%), 4.48 us (+8%), 4.44 us (+7%), 4.49 us (+8%), 4.37 us (+5%), 4.40 us (+6%); samples (50): 4.43 us (+6%), 4.50 us (+8%), 4.45 us (+7%), 4.49 us (+8%), 4.50 us (+8%), 4.49 us (+8%), 4.52 us (+9%), 4.49 us (+8%), 4.45 us (+7%), 4.42 us (+6%), 4.45 us (+7%), 4.45 us (+7%), 4.44 us (+7%), 4.41 us (+6%), 4.45 us (+7%), 4.44 us (+7%), 4.40 us (+6%), 4.41 us (+6%), 4.42 us (+6%), 4.47 us (+8%), 4.45 us (+7%), 4.45 us (+7%), 4.42 us (+6%), 4.38 us (+5%), 4.46 us (+7%), 4.48 us (+8%), 4.45 us (+7%), 4.38 us (+5%), 4.41 us (+6%), 4.44 us (+7%), 4.44 us (+7%), 4.47 us (+7%), 4.50 us (+8%), 4.44 us (+7%), 4.46 us (+7%), 4.46 us (+7%), 4.46 us (+7%), 4.36 us, 4.41 us (+6%), 4.47 us (+7%), 4.42 us (+6%), 4.35 us, 4.40 us (+6%), 4.39 us (+6%), 4.34 us, 4.39 us (+6%), 4.41 us (+6%), 4.40 us (+6%), 4.42 us (+6%), 4.37 us
Run 40: warmup (20): 3.91 us (-6%), 3.96 us, 3.97 us, 3.97 us, 3.94 us (-5%), 3.96 us, 4.00 us, 3.97 us, 3.96 us, 3.99 us, 3.97 us, 3.95 us, 3.96 us, 3.96 us, 3.92 us (-6%), 3.96 us, 3.93 us (-6%), 3.96 us, 4.04 us, 4.13 us; samples (50): 4.08 us, 3.98 us, 3.94 us (-5%), 4.00 us, 4.08 us, 4.03 us, 4.01 us, 3.99 us, 4.13 us, 4.15 us, 5.44 us (+31%), 4.15 us, 4.31 us, 5.36 us (+29%), 4.42 us (+6%), 4.07 us, 4.19 us, 4.95 us (+19%), 4.83 us (+16%), 4.69 us (+13%), 4.91 us (+18%), 4.67 us (+12%), 4.27 us, 4.44 us (+7%), 4.14 us, 4.30 us, 4.06 us, 4.22 us, 4.09 us, 4.87 us (+17%), 4.86 us (+17%), 4.53 us (+9%), 4.21 us, 4.27 us, 4.04 us, 4.01 us, 4.00 us, 3.98 us, 3.98 us, 4.04 us, 3.98 us, 4.02 us, 3.97 us, 4.02 us, 4.02 us, 4.01 us, 4.04 us, 3.98 us, 3.96 us, 4.65 us (+12%)

3.70 us:  119 #######
3.97 us: 1156 #################################################################
4.23 us:  371 #####################
4.50 us:  116 #######
4.76 us:   77 ####
5.02 us:   64 ####
5.29 us:   32 ##
5.55 us:   15 #
5.82 us:   12 #
6.08 us:   14 #
6.35 us:    4 |
6.61 us:    5 |
6.88 us:    3 |
7.14 us:    2 |
7.40 us:    0 |
7.67 us:    1 |
7.93 us:    3 |
8.20 us:    1 |
8.46 us:    3 |
8.73 us:    1 |
8.99 us:    1 |

WARNING: the benchmark seems unstable, the standard deviation is high (stdev/median: 13%)
Try to rerun the benchmark with more runs, samples and/or loops

Median +- std dev: 4.16 us +- 0.53 us

with changes

........................................
Metadata:
- aslr: Full randomization
- boot_time: 2016-10-03T11:28:53
- cpu_config: 0-3=driver:intel_pstate, intel_pstate:turbo, governor:powersave; idle:intel_idle
- cpu_count: 4
- cpu_model_name: Intel(R) Core(TM) i7-5600U CPU @ 2.60GHz
- hostname: funami
- loops: 2^15
- name: timeit
- perf_version: 0.7.12
- platform: Linux-4.7.5-1-ARCH-x86_64-with-arch
- python_cflags: -Wno-unused-result -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes
- python_executable: /home/yui/.virtualenvs/databazaar/bin/python
- python_implementation: cpython
- python_version: 3.4.3 (64-bit) revision b4cbecbc0781
- timeit_setup: 'import pandas as pd;s = pd.Series([1, 2, 3])'
- timeit_stmt: 's[0] = 1'
- timer: clock_gettime(CLOCK_MONOTONIC), resolution: 1.00 ns

Run 1: warmup (36): 1.04 ms (+26664%), 26.9 us (+596%), 14.8 us (+283%), 10.6 us (+174%), 8.62 us (+123%), 7.60 us (+97%), 7.21 us (+86%), 7.11 us (+84%), 6.85 us (+77%), 7.09 us (+83%), 6.98 us (+80%), 6.64 us (+72%), 3.75 us, 3.63 us (-6%), 3.66 us (-5%), 3.71 us, 3.74 us, 3.83 us, 3.79 us, 3.65 us (-6%), 3.72 us, 3.70 us, 3.71 us, 3.73 us, 3.73 us, 3.66 us (-5%), 3.83 us, 4.85 us (+25%), 3.73 us, 3.74 us, 4.29 us (+11%), 3.71 us, 3.77 us, 3.75 us, 3.74 us, 3.67 us (-5%); samples (50): 3.67 us (-5%), 3.64 us (-6%), 3.65 us (-6%), 3.65 us (-6%), 3.73 us, 4.11 us (+6%), 4.20 us (+9%), 3.68 us, 4.48 us (+16%), 4.63 us (+20%), 3.79 us, 3.63 us (-6%), 3.73 us, 3.64 us (-6%), 3.63 us (-6%), 3.63 us (-6%), 3.64 us (-6%), 3.72 us, 3.70 us, 3.70 us, 3.82 us, 3.83 us, 3.79 us, 3.74 us, 3.63 us (-6%), 3.69 us, 3.79 us, 3.83 us, 3.75 us, 3.89 us, 3.73 us, 3.75 us, 3.77 us, 4.33 us (+12%), 4.78 us (+23%), 4.14 us (+7%), 4.85 us (+25%), 4.02 us, 3.98 us, 3.96 us, 3.83 us, 3.72 us, 3.73 us, 3.76 us, 3.73 us, 3.77 us, 3.68 us, 3.68 us, 4.08 us (+6%), 3.73 us
Run 2: warmup (20): 4.53 us (+17%), 4.47 us (+16%), 4.45 us (+15%), 4.44 us (+15%), 4.30 us (+11%), 4.36 us (+13%), 4.32 us (+12%), 4.31 us (+11%), 4.25 us (+10%), 4.26 us (+10%), 4.35 us (+12%), 4.34 us (+12%), 4.31 us (+11%), 4.31 us (+11%), 4.42 us (+14%), 4.41 us (+14%), 4.34 us (+12%), 4.32 us (+12%), 4.41 us (+14%), 4.34 us (+12%); samples (50): 4.57 us (+18%), 4.36 us (+13%), 4.30 us (+11%), 4.29 us (+11%), 4.40 us (+14%), 4.38 us (+13%), 4.31 us (+11%), 4.21 us (+9%), 4.36 us (+13%), 4.83 us (+25%), 4.37 us (+13%), 4.35 us (+13%), 4.43 us (+15%), 4.40 us (+14%), 4.41 us (+14%), 4.41 us (+14%), 4.53 us (+17%), 4.39 us (+13%), 4.98 us (+29%), 5.35 us (+38%), 6.78 us (+75%), 5.24 us (+36%), 5.14 us (+33%), 4.31 us (+11%), 4.32 us (+12%), 4.27 us (+10%), 4.34 us (+12%), 4.33 us (+12%), 4.36 us (+13%), 4.40 us (+14%), 4.45 us (+15%), 4.57 us (+18%), 5.20 us (+35%), 4.31 us (+11%), 4.49 us (+16%), 5.58 us (+44%), 6.60 us (+71%), 6.91 us (+79%), 6.67 us (+72%), 5.98 us (+55%), 5.44 us (+41%), 5.60 us (+45%), 5.56 us (+44%), 5.58 us (+44%), 6.68 us (+73%), 6.60 us (+71%), 6.24 us (+61%), 4.78 us (+24%), 6.12 us (+58%), 8.45 us (+118%)
Run 3: warmup (20): 6.46 us (+67%), 4.96 us (+28%), 4.88 us (+26%), 4.73 us (+22%), 4.28 us (+11%), 4.33 us (+12%), 4.29 us (+11%), 4.98 us (+29%), 7.88 us (+104%), 5.76 us (+49%), 5.82 us (+50%), 4.56 us (+18%), 4.71 us (+22%), 8.21 us (+112%), 8.16 us (+111%), 6.01 us (+56%), 6.12 us (+58%), 4.57 us (+18%), 3.90 us, 3.82 us; samples (50): 3.85 us, 3.80 us, 3.79 us, 3.81 us, 3.79 us, 3.80 us, 3.85 us, 3.83 us, 3.91 us, 4.41 us (+14%), 4.11 us (+6%), 3.91 us, 3.91 us, 3.77 us, 3.83 us, 3.82 us, 3.81 us, 3.96 us, 3.84 us, 3.84 us, 3.92 us, 3.85 us, 3.84 us, 3.84 us, 3.86 us, 3.86 us, 3.85 us, 3.82 us, 3.82 us, 3.84 us, 3.83 us, 3.89 us, 3.94 us, 3.84 us, 3.82 us, 3.87 us, 4.95 us (+28%), 4.62 us (+19%), 3.87 us, 3.85 us, 4.75 us (+23%), 7.72 us (+100%), 4.54 us (+17%), 4.41 us (+14%), 4.28 us (+11%), 4.02 us, 3.94 us, 3.90 us, 3.89 us, 3.84 us
Run 4: warmup (20): 4.04 us, 4.11 us (+6%), 4.01 us, 4.02 us, 4.02 us, 3.98 us, 4.03 us, 4.02 us, 3.96 us, 3.96 us, 3.96 us, 3.95 us, 3.96 us, 3.94 us, 3.92 us, 3.95 us, 3.96 us, 3.92 us, 3.93 us, 3.95 us; samples (50): 3.92 us, 3.95 us, 3.99 us, 3.92 us, 3.92 us, 3.96 us, 4.04 us, 3.96 us, 3.97 us, 3.93 us, 3.96 us, 3.94 us, 3.97 us, 3.92 us, 3.93 us, 3.90 us, 3.95 us, 3.95 us, 3.95 us, 3.95 us, 3.99 us, 4.03 us, 4.01 us, 3.97 us, 3.95 us, 3.96 us, 3.99 us, 4.06 us, 4.07 us (+5%), 3.96 us, 3.89 us, 3.93 us, 3.93 us, 3.93 us, 3.88 us, 3.92 us, 3.94 us, 3.95 us, 3.86 us, 3.88 us, 4.45 us (+15%), 4.32 us (+12%), 4.17 us (+8%), 4.26 us (+10%), 4.01 us, 3.92 us, 3.92 us, 3.95 us, 3.89 us, 3.93 us
Run 5: warmup (20): 3.96 us, 3.75 us, 4.10 us (+6%), 5.04 us (+30%), 3.77 us, 3.71 us, 3.99 us, 4.08 us (+5%), 3.76 us, 3.73 us, 3.73 us, 3.75 us, 3.68 us, 3.70 us, 3.71 us, 3.69 us, 3.72 us, 3.72 us, 3.73 us, 3.70 us; samples (50): 3.72 us, 3.72 us, 3.77 us, 3.69 us, 3.72 us, 3.68 us, 3.75 us, 3.82 us, 3.75 us, 3.75 us, 3.73 us, 3.76 us, 3.78 us, 3.74 us, 3.71 us, 3.76 us, 3.72 us, 3.71 us, 3.70 us, 3.69 us, 3.66 us (-5%), 3.73 us, 3.74 us, 3.69 us, 3.69 us, 3.68 us, 3.68 us, 3.69 us, 3.71 us, 3.69 us, 3.70 us, 3.70 us, 3.70 us, 3.69 us, 3.67 us (-5%), 3.67 us (-5%), 3.73 us, 3.68 us, 3.68 us, 3.71 us, 3.77 us, 3.69 us, 3.67 us (-5%), 3.70 us, 3.70 us, 3.72 us, 3.68 us, 3.72 us, 3.78 us, 3.72 us
Run 6: warmup (20): 3.79 us, 3.81 us, 3.83 us, 3.82 us, 3.83 us, 4.03 us, 3.84 us, 3.81 us, 3.96 us, 4.11 us (+6%), 4.34 us (+12%), 4.21 us (+9%), 4.14 us (+7%), 4.19 us (+8%), 4.02 us, 4.07 us (+5%), 3.90 us, 3.89 us, 3.87 us, 3.89 us; samples (50): 3.81 us, 3.81 us, 3.85 us, 3.88 us, 3.84 us, 4.09 us (+6%), 4.30 us (+11%), 4.41 us (+14%), 4.12 us (+6%), 4.18 us (+8%), 4.06 us (+5%), 4.75 us (+23%), 5.03 us (+30%), 3.83 us, 4.94 us (+28%), 3.82 us, 3.88 us, 3.84 us, 3.83 us, 3.85 us, 3.82 us, 3.83 us, 3.81 us, 3.86 us, 3.88 us, 4.20 us (+8%), 3.87 us, 3.81 us, 3.85 us, 3.84 us, 3.82 us, 3.83 us, 3.81 us, 3.88 us, 3.85 us, 3.84 us, 3.89 us, 4.04 us, 3.90 us, 3.80 us, 3.82 us, 3.80 us, 3.77 us, 3.77 us, 3.79 us, 4.14 us (+7%), 3.93 us, 3.80 us, 3.86 us, 3.79 us
Run 7: warmup (20): 3.67 us (-5%), 3.79 us, 3.75 us, 3.76 us, 3.76 us, 3.86 us, 3.77 us, 3.79 us, 3.84 us, 3.78 us, 3.75 us, 3.80 us, 3.76 us, 3.77 us, 3.74 us, 3.74 us, 4.38 us (+13%), 5.60 us (+45%), 3.69 us, 3.71 us; samples (50): 3.74 us, 3.72 us, 3.68 us, 3.72 us, 5.38 us (+39%), 5.94 us (+54%), 5.90 us (+52%), 3.72 us, 3.76 us, 3.75 us, 4.12 us (+7%), 5.96 us (+54%), 5.15 us (+33%), 3.70 us, 3.88 us, 3.77 us, 3.74 us, 3.77 us, 3.86 us, 3.74 us, 3.72 us, 3.73 us, 3.72 us, 3.76 us, 4.02 us, 4.36 us (+13%), 4.09 us (+6%), 3.87 us, 3.78 us, 3.75 us, 3.74 us, 3.74 us, 3.70 us, 3.74 us, 3.73 us, 3.87 us, 3.74 us, 3.75 us, 3.73 us, 3.73 us, 3.74 us, 3.75 us, 3.76 us, 3.73 us, 3.73 us, 3.74 us, 3.78 us, 3.77 us, 3.74 us, 3.75 us
Run 8: warmup (20): 3.69 us, 3.74 us, 3.73 us, 3.75 us, 3.75 us, 3.71 us, 3.74 us, 3.76 us, 3.70 us, 3.69 us, 3.70 us, 3.74 us, 3.74 us, 3.70 us, 3.72 us, 3.72 us, 3.78 us, 3.75 us, 3.74 us, 3.74 us; samples (50): 3.72 us, 3.77 us, 3.70 us, 3.75 us, 3.72 us, 3.74 us, 3.72 us, 3.77 us, 3.74 us, 3.78 us, 3.77 us, 3.77 us, 3.73 us, 3.77 us, 3.73 us, 3.73 us, 3.74 us, 3.72 us, 3.72 us, 3.74 us, 3.74 us, 3.75 us, 3.76 us, 3.75 us, 3.73 us, 3.74 us, 3.74 us, 3.72 us, 3.73 us, 3.73 us, 3.70 us, 3.69 us, 3.77 us, 3.72 us, 3.72 us, 3.68 us, 3.71 us, 3.71 us, 3.68 us, 3.73 us, 3.70 us, 3.71 us, 3.71 us, 3.74 us, 3.73 us, 3.72 us, 3.74 us, 3.71 us, 3.74 us, 3.70 us
Run 9: warmup (20): 3.92 us, 3.90 us, 3.94 us, 4.01 us, 3.93 us, 3.89 us, 3.96 us, 3.90 us, 3.88 us, 3.90 us, 3.96 us, 4.18 us (+8%), 3.88 us, 3.94 us, 3.88 us, 3.88 us, 4.12 us (+6%), 3.86 us, 3.87 us, 4.00 us; samples (50): 3.89 us, 3.90 us, 3.92 us, 4.00 us, 4.69 us (+21%), 3.90 us, 3.85 us, 3.86 us, 3.92 us, 3.90 us, 3.93 us, 3.91 us, 3.92 us, 3.93 us, 3.93 us, 4.18 us (+8%), 3.87 us, 3.92 us, 4.01 us, 3.98 us, 3.91 us, 3.99 us, 3.97 us, 4.31 us (+11%), 4.00 us, 3.98 us, 5.13 us (+33%), 6.13 us (+58%), 6.07 us (+57%), 5.33 us (+38%), 5.94 us (+54%), 5.90 us (+52%), 5.11 us (+32%), 5.02 us (+30%), 5.09 us (+32%), 4.93 us (+27%), 4.89 us (+26%), 5.04 us (+30%), 5.02 us (+30%), 5.17 us (+34%), 4.98 us (+29%), 4.81 us (+24%), 4.99 us (+29%), 4.96 us (+28%), 5.54 us (+43%), 5.90 us (+53%), 5.78 us (+49%), 6.18 us (+60%), 5.09 us (+31%), 5.07 us (+31%)
Run 10: warmup (20): 6.41 us (+66%), 6.36 us (+64%), 6.70 us (+73%), 6.65 us (+72%), 5.99 us (+55%), 5.48 us (+42%), 6.16 us (+59%), 6.14 us (+59%), 4.08 us (+6%), 4.00 us, 4.01 us, 4.06 us, 4.13 us (+7%), 4.12 us (+7%), 4.03 us, 4.08 us (+5%), 4.05 us, 4.11 us (+6%), 4.04 us, 4.16 us (+7%); samples (50): 4.01 us, 3.98 us, 4.04 us, 3.99 us, 3.97 us, 3.94 us, 4.00 us, 5.32 us (+37%), 4.82 us (+25%), 3.96 us, 3.96 us, 4.02 us, 4.05 us, 4.11 us (+6%), 3.97 us, 4.06 us (+5%), 4.05 us, 4.01 us, 3.98 us, 4.08 us (+5%), 3.99 us, 4.02 us, 4.08 us (+5%), 4.07 us (+5%), 3.98 us, 4.04 us, 4.03 us, 5.59 us (+45%), 4.98 us (+29%), 3.99 us, 4.05 us, 4.05 us, 4.00 us, 3.98 us, 4.01 us, 3.99 us, 4.00 us, 4.02 us, 4.05 us, 3.99 us, 3.95 us, 4.33 us (+12%), 6.48 us (+68%), 4.07 us (+5%), 4.06 us, 4.04 us, 4.04 us, 3.99 us, 3.96 us, 4.01 us
Run 11: warmup (20): 3.78 us, 3.78 us, 3.75 us, 4.67 us (+21%), 5.66 us (+46%), 3.80 us, 3.80 us, 3.77 us, 3.78 us, 3.75 us, 3.80 us, 3.77 us, 3.75 us, 3.77 us, 3.76 us, 3.77 us, 3.78 us, 3.78 us, 3.78 us, 3.74 us; samples (50): 3.75 us, 3.76 us, 3.74 us, 3.76 us, 3.77 us, 3.78 us, 3.71 us, 3.76 us, 3.74 us, 3.80 us, 3.73 us, 3.77 us, 3.76 us, 3.77 us, 3.78 us, 3.82 us, 3.75 us, 3.78 us, 3.77 us, 3.74 us, 3.73 us, 3.79 us, 3.78 us, 3.73 us, 3.78 us, 3.77 us, 3.78 us, 3.75 us, 3.74 us, 3.80 us, 3.80 us, 5.09 us (+32%), 5.45 us (+41%), 3.74 us, 3.77 us, 3.75 us, 3.75 us, 3.78 us, 3.74 us, 3.73 us, 3.72 us, 3.76 us, 3.72 us, 3.75 us, 3.75 us, 3.72 us, 3.97 us, 6.03 us (+56%), 4.36 us (+13%), 3.77 us
Run 12: warmup (20): 3.73 us, 3.80 us, 3.80 us, 3.79 us, 3.79 us, 3.81 us, 3.80 us, 3.80 us, 3.77 us, 3.81 us, 3.77 us, 3.82 us, 3.84 us, 3.80 us, 3.80 us, 3.81 us, 3.83 us, 3.77 us, 3.76 us, 3.81 us; samples (50): 3.85 us, 4.06 us, 4.17 us (+8%), 3.84 us, 3.80 us, 3.78 us, 3.76 us, 3.83 us, 3.78 us, 3.80 us, 3.81 us, 3.80 us, 4.07 us (+5%), 3.83 us, 3.83 us, 3.81 us, 3.83 us, 4.80 us (+24%), 4.29 us (+11%), 3.80 us, 4.14 us (+7%), 3.78 us, 4.82 us (+25%), 4.24 us (+10%), 3.81 us, 3.76 us, 3.78 us, 4.61 us (+19%), 4.61 us (+19%), 3.81 us, 3.82 us, 3.82 us, 4.05 us, 3.93 us, 3.78 us, 3.73 us, 3.73 us, 3.74 us, 3.72 us, 3.79 us, 3.82 us, 3.73 us, 3.79 us, 3.80 us, 3.76 us, 3.74 us, 3.74 us, 3.78 us, 3.79 us, 3.75 us
Run 13: warmup (20): 3.70 us, 3.71 us, 3.78 us, 3.76 us, 3.74 us, 3.76 us, 3.73 us, 3.75 us, 3.72 us, 3.73 us, 3.73 us, 3.72 us, 3.83 us, 3.76 us, 3.71 us, 3.74 us, 3.74 us, 3.74 us, 3.73 us, 3.72 us; samples (50): 3.73 us, 3.72 us, 3.75 us, 3.72 us, 3.73 us, 3.77 us, 3.73 us, 3.76 us, 3.76 us, 3.73 us, 3.73 us, 3.77 us, 3.76 us, 3.81 us, 3.78 us, 3.76 us, 3.73 us, 3.77 us, 3.72 us, 3.74 us, 3.74 us, 3.78 us, 3.77 us, 3.76 us, 3.76 us, 3.76 us, 3.81 us, 3.78 us, 3.73 us, 3.77 us, 3.77 us, 4.23 us (+9%), 3.78 us, 3.78 us, 3.77 us, 3.76 us, 3.77 us, 3.73 us, 3.71 us, 3.74 us, 3.67 us (-5%), 3.70 us, 3.74 us, 3.72 us, 3.72 us, 3.73 us, 3.73 us, 3.76 us, 3.71 us, 3.73 us
Run 14: warmup (20): 3.76 us, 3.76 us, 3.74 us, 3.74 us, 3.71 us, 3.71 us, 3.73 us, 3.75 us, 3.76 us, 3.70 us, 3.71 us, 3.72 us, 3.68 us, 3.76 us, 3.66 us (-5%), 3.70 us, 3.67 us (-5%), 3.69 us, 3.74 us, 3.68 us; samples (50): 3.69 us, 3.77 us, 3.71 us, 3.70 us, 3.71 us, 3.71 us, 3.73 us, 3.71 us, 3.80 us, 3.73 us, 3.72 us, 3.76 us, 3.72 us, 3.76 us, 3.73 us, 3.73 us, 3.77 us, 3.76 us, 3.77 us, 3.73 us, 3.72 us, 3.81 us, 3.70 us, 3.74 us, 3.76 us, 3.74 us, 3.79 us, 3.74 us, 3.76 us, 3.71 us, 3.75 us, 3.75 us, 3.68 us, 3.72 us, 3.68 us, 3.70 us, 3.72 us, 3.71 us, 3.69 us, 3.69 us, 3.69 us, 3.76 us, 3.71 us, 3.70 us, 3.71 us, 3.70 us, 3.74 us, 3.70 us, 3.71 us, 3.72 us
Run 15: warmup (20): 3.73 us, 3.83 us, 3.78 us, 3.86 us, 3.83 us, 3.81 us, 3.80 us, 3.88 us, 3.81 us, 3.79 us, 3.76 us, 3.80 us, 3.73 us, 3.80 us, 3.74 us, 3.80 us, 3.77 us, 3.68 us, 3.78 us, 3.74 us; samples (50): 3.72 us, 3.74 us, 3.70 us, 3.70 us, 3.73 us, 3.69 us, 3.74 us, 3.72 us, 3.71 us, 3.78 us, 3.76 us, 3.79 us, 3.70 us, 3.74 us, 3.76 us, 3.71 us, 3.78 us, 3.75 us, 3.72 us, 3.80 us, 3.71 us, 3.74 us, 3.75 us, 3.76 us, 3.77 us, 3.71 us, 3.75 us, 3.75 us, 3.72 us, 3.74 us, 3.78 us, 3.83 us, 3.74 us, 3.72 us, 3.74 us, 3.75 us, 3.74 us, 3.68 us, 3.68 us, 3.73 us, 3.70 us, 3.72 us, 3.77 us, 3.81 us, 3.76 us, 3.68 us, 3.71 us, 3.72 us, 3.70 us, 3.70 us
Run 16: warmup (20): 4.29 us (+11%), 4.58 us (+19%), 4.49 us (+16%), 4.34 us (+12%), 4.39 us (+13%), 4.40 us (+14%), 4.36 us (+13%), 4.35 us (+12%), 4.31 us (+12%), 4.33 us (+12%), 4.32 us (+12%), 4.36 us (+13%), 4.37 us (+13%), 4.33 us (+12%), 4.31 us (+12%), 4.33 us (+12%), 4.54 us (+17%), 4.28 us (+11%), 4.33 us (+12%), 4.31 us (+11%); samples (50): 4.32 us (+12%), 4.34 us (+12%), 4.31 us (+11%), 5.14 us (+33%), 4.38 us (+13%), 4.31 us (+12%), 4.29 us (+11%), 4.28 us (+11%), 4.27 us (+10%), 4.27 us (+10%), 4.29 us (+11%), 4.31 us (+12%), 4.32 us (+12%), 4.32 us (+12%), 4.27 us (+10%), 4.29 us (+11%), 4.29 us (+11%), 4.33 us (+12%), 4.51 us (+17%), 6.48 us (+67%), 6.42 us (+66%), 6.27 us (+62%), 6.18 us (+60%), 6.46 us (+67%), 5.97 us (+54%), 5.67 us (+47%), 5.12 us (+32%), 4.58 us (+18%), 4.48 us (+16%), 4.67 us (+21%), 5.02 us (+30%), 5.00 us (+29%), 4.96 us (+28%), 5.17 us (+34%), 5.30 us (+37%), 4.95 us (+28%), 4.97 us (+28%), 4.90 us (+27%), 4.95 us (+28%), 5.23 us (+35%), 4.44 us (+15%), 5.21 us (+35%), 4.42 us (+14%), 4.48 us (+16%), 5.01 us (+30%), 5.52 us (+43%), 5.17 us (+34%), 5.24 us (+35%), 6.49 us (+68%), 6.70 us (+73%)
Run 17: warmup (20): 3.95 us, 4.40 us (+14%), 3.87 us, 3.86 us, 3.76 us, 3.75 us, 3.71 us, 3.69 us, 3.74 us, 3.72 us, 3.75 us, 3.69 us, 3.76 us, 3.72 us, 3.75 us, 3.71 us, 3.74 us, 3.75 us, 3.69 us, 3.71 us; samples (50): 3.72 us, 3.71 us, 3.68 us, 3.70 us, 3.67 us (-5%), 3.76 us, 3.77 us, 3.73 us, 3.74 us, 3.74 us, 3.73 us, 3.73 us, 3.78 us, 3.80 us, 3.79 us, 3.81 us, 3.79 us, 3.75 us, 3.79 us, 3.81 us, 3.86 us, 3.82 us, 3.78 us, 3.76 us, 3.76 us, 3.81 us, 3.72 us, 3.71 us, 3.69 us, 3.71 us, 3.71 us, 3.71 us, 3.68 us, 3.68 us, 3.69 us, 3.70 us, 3.75 us, 3.72 us, 3.70 us, 3.71 us, 3.69 us, 3.74 us, 3.73 us, 3.72 us, 3.70 us, 3.71 us, 3.71 us, 3.72 us, 3.68 us, 3.72 us
Run 18: warmup (20): 3.94 us, 3.96 us, 4.08 us (+5%), 4.07 us (+5%), 4.01 us, 4.06 us (+5%), 4.06 us, 4.01 us, 4.02 us, 3.99 us, 4.00 us, 4.04 us, 3.99 us, 4.03 us, 4.81 us (+24%), 3.98 us, 4.04 us, 3.99 us, 4.02 us, 4.00 us; samples (50): 3.99 us, 4.04 us, 3.99 us, 4.00 us, 4.00 us, 4.02 us, 4.12 us (+6%), 4.02 us, 4.03 us, 5.03 us (+30%), 3.98 us, 4.01 us, 4.00 us, 4.00 us, 4.05 us, 3.97 us, 4.03 us, 4.02 us, 3.97 us, 4.87 us (+26%), 3.97 us, 4.04 us, 3.97 us, 4.27 us (+11%), 4.06 us, 4.06 us, 4.08 us (+5%), 4.01 us, 4.02 us, 4.04 us, 4.00 us, 4.11 us (+6%), 4.08 us (+5%), 4.04 us, 4.07 us (+5%), 4.17 us (+8%), 4.18 us (+8%), 3.98 us, 4.28 us (+11%), 4.69 us (+21%), 3.95 us, 4.02 us, 3.98 us, 3.98 us, 3.97 us, 3.98 us, 4.01 us, 3.98 us, 3.96 us, 3.95 us
Run 19: warmup (20): 4.14 us (+7%), 4.59 us (+19%), 3.86 us, 3.85 us, 3.89 us, 3.84 us, 3.92 us, 3.82 us, 3.80 us, 3.92 us, 3.87 us, 3.86 us, 3.87 us, 3.95 us, 3.88 us, 3.83 us, 4.94 us (+28%), 3.85 us, 3.83 us, 3.92 us; samples (50): 3.89 us, 3.90 us, 3.89 us, 3.96 us, 3.85 us, 3.89 us, 3.83 us, 3.90 us, 3.86 us, 3.89 us, 3.84 us, 4.21 us (+9%), 3.82 us, 3.85 us, 3.86 us, 3.93 us, 3.86 us, 3.88 us, 3.82 us, 3.82 us, 3.80 us, 3.85 us, 4.81 us (+24%), 3.82 us, 4.04 us, 4.36 us (+13%), 4.82 us (+25%), 4.51 us (+17%), 3.87 us, 3.89 us, 3.97 us, 3.86 us, 3.89 us, 4.79 us (+24%), 4.59 us (+19%), 3.90 us, 3.90 us, 3.85 us, 3.83 us, 3.87 us, 3.89 us, 3.86 us, 3.92 us, 3.92 us, 3.82 us, 3.84 us, 3.81 us, 3.84 us, 3.96 us, 3.82 us
Run 20: warmup (20): 3.89 us, 3.88 us, 3.84 us, 3.81 us, 3.79 us, 3.82 us, 3.77 us, 3.77 us, 3.78 us, 3.80 us, 3.78 us, 3.77 us, 3.76 us, 3.79 us, 3.77 us, 3.74 us, 3.77 us, 3.75 us, 3.74 us, 3.78 us; samples (50): 3.75 us, 3.77 us, 3.75 us, 3.77 us, 3.77 us, 3.76 us, 3.76 us, 3.81 us, 3.81 us, 3.83 us, 3.80 us, 3.82 us, 3.77 us, 3.76 us, 3.74 us, 3.80 us, 3.76 us, 3.80 us, 3.76 us, 3.75 us, 3.80 us, 3.77 us, 3.74 us, 3.78 us, 3.76 us, 3.77 us, 3.81 us, 3.74 us, 3.75 us, 3.77 us, 3.75 us, 3.79 us, 3.80 us, 3.74 us, 3.74 us, 3.79 us, 3.83 us, 3.79 us, 3.78 us, 3.79 us, 3.79 us, 3.77 us, 3.76 us, 3.76 us, 3.79 us, 3.83 us, 3.76 us, 3.74 us, 3.77 us, 3.78 us
Run 21: warmup (20): 4.01 us, 4.10 us (+6%), 4.02 us, 4.03 us, 4.07 us (+5%), 4.06 us, 4.04 us, 4.04 us, 4.05 us, 3.98 us, 3.97 us, 4.03 us, 4.00 us, 4.00 us, 4.02 us, 4.00 us, 4.00 us, 4.01 us, 4.01 us, 3.94 us; samples (50): 4.00 us, 4.00 us, 4.00 us, 4.05 us, 4.00 us, 3.99 us, 4.13 us (+7%), 4.01 us, 3.97 us, 3.99 us, 4.03 us, 4.01 us, 3.97 us, 4.03 us, 4.06 us (+5%), 4.06 us, 4.02 us, 4.05 us, 4.01 us, 4.03 us, 4.23 us (+9%), 4.45 us (+15%), 4.49 us (+16%), 4.16 us (+8%), 4.13 us (+7%), 4.07 us (+5%), 3.97 us, 3.96 us, 3.94 us, 4.24 us (+10%), 4.06 us, 4.00 us, 3.98 us, 4.09 us (+6%), 3.94 us, 4.05 us, 3.97 us, 3.97 us, 3.92 us, 3.93 us, 4.01 us, 3.97 us, 3.99 us, 3.97 us, 3.96 us, 4.17 us (+8%), 3.97 us, 4.01 us, 4.06 us, 3.99 us
Run 22: warmup (20): 4.07 us (+5%), 4.05 us, 4.09 us (+6%), 4.22 us (+9%), 4.02 us, 4.17 us (+8%), 4.18 us (+8%), 4.53 us (+17%), 5.20 us (+34%), 4.02 us, 4.04 us, 4.10 us (+6%), 4.05 us, 4.04 us, 4.02 us, 4.05 us, 4.09 us (+6%), 4.09 us (+6%), 4.02 us, 4.01 us; samples (50): 4.01 us, 4.10 us (+6%), 4.06 us, 3.97 us, 3.98 us, 4.08 us (+5%), 4.07 us (+5%), 4.05 us, 4.04 us, 4.06 us, 4.08 us (+5%), 4.08 us (+5%), 3.99 us, 4.05 us, 4.08 us (+5%), 4.07 us (+5%), 4.05 us, 4.03 us, 4.04 us, 3.99 us, 3.97 us, 4.00 us, 4.01 us, 4.03 us, 4.12 us (+7%), 4.07 us (+5%), 4.03 us, 4.01 us, 4.05 us, 4.12 us (+7%), 4.00 us, 5.51 us (+42%), 4.14 us (+7%), 4.10 us (+6%), 4.08 us (+5%), 4.01 us, 4.14 us (+7%), 4.00 us, 4.00 us, 4.06 us (+5%), 4.08 us (+5%), 4.01 us, 4.03 us, 4.10 us (+6%), 4.00 us, 4.06 us (+5%), 4.20 us (+9%), 4.05 us, 4.01 us, 4.05 us
Run 23: warmup (20): 3.94 us, 3.99 us, 3.98 us, 4.00 us, 3.99 us, 4.01 us, 3.97 us, 4.05 us, 3.99 us, 3.99 us, 3.99 us, 3.99 us, 3.99 us, 4.01 us, 4.01 us, 4.03 us, 4.00 us, 4.00 us, 3.96 us, 3.93 us; samples (50): 3.93 us, 3.94 us, 3.97 us, 3.96 us, 3.95 us, 3.95 us, 3.95 us, 3.95 us, 6.29 us (+63%), 6.04 us (+56%), 4.51 us (+17%), 6.12 us (+58%), 6.09 us (+57%), 6.34 us (+64%), 6.77 us (+75%), 5.96 us (+54%), 6.38 us (+65%), 7.50 us (+94%), 8.22 us (+112%), 6.06 us (+57%), 6.12 us (+58%), 6.97 us (+80%), 6.13 us (+58%), 5.72 us (+48%), 6.41 us (+66%), 6.50 us (+68%), 6.40 us (+65%), 5.80 us (+50%), 7.34 us (+90%), 6.54 us (+69%), 6.44 us (+67%), 8.51 us (+120%), 6.14 us (+59%), 4.52 us (+17%), 4.33 us (+12%), 4.97 us (+29%), 4.59 us (+19%), 4.21 us (+9%), 4.27 us (+10%), 4.14 us (+7%), 4.23 us (+9%), 4.19 us (+8%), 4.02 us, 4.73 us (+22%), 4.00 us, 4.00 us, 4.03 us, 4.02 us, 4.00 us, 4.01 us
Run 24: warmup (20): 3.73 us, 3.80 us, 3.79 us, 3.77 us, 3.76 us, 3.80 us, 3.87 us, 3.78 us, 3.72 us, 3.75 us, 3.76 us, 3.76 us, 3.74 us, 3.76 us, 3.74 us, 3.78 us, 3.76 us, 3.77 us, 3.75 us, 3.83 us; samples (50): 3.74 us, 3.75 us, 3.76 us, 3.76 us, 3.78 us, 4.66 us (+20%), 4.31 us (+11%), 3.78 us, 4.41 us (+14%), 5.06 us (+31%), 3.91 us, 4.40 us (+14%), 3.89 us, 4.49 us (+16%), 3.99 us, 3.84 us, 3.75 us, 4.44 us (+15%), 4.40 us (+14%), 4.58 us (+18%), 4.41 us (+14%), 4.42 us (+14%), 6.83 us (+76%), 4.38 us (+13%), 3.87 us, 3.91 us, 3.88 us, 4.59 us (+19%), 4.30 us (+11%), 4.58 us (+18%), 4.06 us (+5%), 3.85 us, 3.81 us, 3.79 us, 3.84 us, 3.84 us, 3.83 us, 3.80 us, 3.76 us, 3.78 us, 3.72 us, 3.75 us, 3.73 us, 4.67 us (+21%), 3.73 us, 3.74 us, 3.74 us, 3.76 us, 3.79 us, 3.75 us
Run 25: warmup (20): 3.73 us, 3.75 us, 3.74 us, 3.79 us, 3.73 us, 3.73 us, 3.75 us, 3.76 us, 3.74 us, 3.74 us, 3.74 us, 3.76 us, 3.74 us, 3.76 us, 3.73 us, 3.78 us, 3.71 us, 3.73 us, 3.72 us, 3.74 us; samples (50): 3.77 us, 3.72 us, 3.72 us, 3.73 us, 3.74 us, 3.75 us, 3.74 us, 3.77 us, 3.75 us, 3.79 us, 3.76 us, 3.77 us, 3.73 us, 3.73 us, 3.78 us, 3.79 us, 3.78 us, 3.78 us, 3.76 us, 3.74 us, 3.77 us, 3.76 us, 3.73 us, 3.75 us, 3.76 us, 3.74 us, 3.77 us, 3.79 us, 3.76 us, 3.75 us, 3.78 us, 3.76 us, 3.78 us, 3.77 us, 3.75 us, 3.79 us, 3.79 us, 3.77 us, 3.74 us, 3.72 us, 3.73 us, 3.78 us, 3.71 us, 3.74 us, 3.74 us, 3.72 us, 3.70 us, 3.75 us, 3.72 us, 3.76 us
Run 26: warmup (20): 4.23 us (+9%), 4.33 us (+12%), 4.35 us (+12%), 4.30 us (+11%), 4.30 us (+11%), 4.31 us (+11%), 4.29 us (+11%), 4.30 us (+11%), 4.27 us (+10%), 4.33 us (+12%), 4.28 us (+11%), 4.27 us (+11%), 4.28 us (+11%), 4.30 us (+11%), 4.30 us (+11%), 4.34 us (+12%), 4.27 us (+11%), 4.31 us (+11%), 4.25 us (+10%), 4.30 us (+11%); samples (50): 4.31 us (+11%), 4.30 us (+11%), 4.31 us (+11%), 4.29 us (+11%), 4.28 us (+11%), 4.28 us (+11%), 4.26 us (+10%), 4.27 us (+10%), 4.34 us (+12%), 4.28 us (+11%), 4.32 us (+12%), 4.26 us (+10%), 4.26 us (+10%), 4.24 us (+10%), 4.26 us (+10%), 4.34 us (+12%), 4.29 us (+11%), 4.28 us (+11%), 4.28 us (+11%), 4.27 us (+11%), 4.32 us (+12%), 4.33 us (+12%), 4.27 us (+10%), 4.30 us (+11%), 4.22 us (+9%), 4.28 us (+11%), 4.31 us (+11%), 4.30 us (+11%), 4.30 us (+11%), 5.48 us (+42%), 6.22 us (+61%), 4.33 us (+12%), 4.37 us (+13%), 4.29 us (+11%), 4.29 us (+11%), 4.28 us (+11%), 4.28 us (+11%), 4.25 us (+10%), 4.23 us (+9%), 4.23 us (+9%), 4.26 us (+10%), 4.27 us (+10%), 4.25 us (+10%), 4.21 us (+9%), 4.83 us (+25%), 6.66 us (+72%), 6.63 us (+71%), 6.76 us (+75%), 6.68 us (+73%), 4.26 us (+10%)
Run 27: warmup (20): 3.75 us, 3.83 us, 3.78 us, 3.73 us, 3.79 us, 3.75 us, 3.78 us, 3.76 us, 3.77 us, 3.72 us, 3.76 us, 3.77 us, 3.75 us, 3.76 us, 4.08 us (+5%), 4.60 us (+19%), 4.25 us (+10%), 3.77 us, 3.89 us, 3.78 us; samples (50): 3.79 us, 3.78 us, 3.78 us, 3.78 us, 3.80 us, 3.76 us, 3.91 us, 3.90 us, 3.96 us, 3.80 us, 3.81 us, 3.82 us, 3.80 us, 3.81 us, 3.83 us, 3.87 us, 5.96 us (+54%), 5.97 us (+54%), 4.94 us (+28%), 3.78 us, 3.77 us, 3.78 us, 3.78 us, 3.76 us, 4.80 us (+24%), 5.61 us (+45%), 3.76 us, 3.74 us, 3.77 us, 4.04 us, 5.98 us (+55%), 5.52 us (+43%), 3.73 us, 3.73 us, 3.75 us, 3.78 us, 3.80 us, 3.76 us, 3.74 us, 3.76 us, 3.75 us, 3.72 us, 3.73 us, 3.77 us, 3.75 us, 3.81 us, 3.77 us, 3.73 us, 3.79 us, 3.74 us
Run 28: warmup (20): 3.75 us, 3.86 us, 3.81 us, 3.79 us, 3.74 us, 3.75 us, 3.76 us, 3.78 us, 3.74 us, 3.77 us, 3.74 us, 3.73 us, 3.73 us, 3.76 us, 3.71 us, 3.76 us, 3.75 us, 3.74 us, 3.91 us, 3.79 us; samples (50): 3.73 us, 3.74 us, 3.78 us, 3.72 us, 5.63 us (+46%), 5.95 us (+54%), 5.32 us (+38%), 3.76 us, 3.77 us, 3.77 us, 3.75 us, 3.80 us, 3.77 us, 3.78 us, 3.75 us, 3.78 us, 3.75 us, 3.75 us, 3.73 us, 3.77 us, 3.72 us, 3.72 us, 3.77 us, 3.74 us, 3.74 us, 3.74 us, 3.85 us, 3.76 us, 3.77 us, 3.74 us, 3.73 us, 3.78 us, 3.76 us, 3.71 us, 3.73 us, 3.74 us, 3.74 us, 3.74 us, 3.75 us, 3.75 us, 3.76 us, 3.77 us, 3.77 us, 3.75 us, 3.77 us, 3.72 us, 3.74 us, 3.75 us, 3.81 us, 3.75 us
Run 29: warmup (20): 3.84 us, 3.90 us, 3.93 us, 3.96 us, 3.96 us, 3.91 us, 3.90 us, 3.87 us, 3.85 us, 3.88 us, 3.93 us, 3.89 us, 3.93 us, 3.91 us, 3.88 us, 3.90 us, 3.87 us, 3.87 us, 3.86 us, 3.92 us; samples (50): 3.90 us, 3.94 us, 4.89 us (+27%), 4.41 us (+14%), 3.90 us, 3.95 us, 3.85 us, 3.88 us, 3.91 us, 3.92 us, 3.90 us, 3.97 us, 4.18 us (+8%), 4.76 us (+23%), 3.93 us, 3.92 us, 3.92 us, 3.93 us, 3.85 us, 3.94 us, 3.91 us, 3.90 us, 3.94 us, 3.95 us, 3.99 us, 3.90 us, 3.90 us, 3.90 us, 3.84 us, 4.74 us (+23%), 4.12 us (+7%), 4.01 us, 3.88 us, 3.85 us, 3.87 us, 3.94 us, 3.88 us, 3.90 us, 3.88 us, 3.87 us, 3.87 us, 3.88 us, 3.86 us, 4.84 us (+25%), 3.92 us, 4.04 us, 3.94 us, 3.96 us, 3.90 us, 3.87 us
Run 30: warmup (20): 3.87 us, 3.85 us, 3.78 us, 3.74 us, 3.77 us, 3.78 us, 3.82 us, 3.85 us, 4.82 us (+25%), 4.43 us (+14%), 4.00 us, 3.90 us, 3.89 us, 3.86 us, 3.85 us, 3.88 us, 3.85 us, 3.85 us, 3.96 us, 3.87 us; samples (50): 3.89 us, 3.84 us, 3.86 us, 3.85 us, 4.14 us (+7%), 3.87 us, 3.77 us, 3.87 us, 3.87 us, 3.86 us, 3.85 us, 3.86 us, 3.88 us, 3.87 us, 3.83 us, 3.88 us, 3.90 us, 3.87 us, 3.85 us, 3.88 us, 4.01 us, 4.42 us (+14%), 6.62 us (+71%), 4.36 us (+13%), 3.92 us, 3.87 us, 3.89 us, 4.98 us (+29%), 4.65 us (+20%), 4.65 us (+20%), 4.43 us (+15%), 4.42 us (+14%), 4.76 us (+23%), 4.67 us (+21%), 3.89 us, 3.73 us, 3.69 us, 3.75 us, 4.62 us (+19%), 4.82 us (+25%), 3.83 us, 3.86 us, 3.77 us, 4.56 us (+18%), 3.76 us, 3.87 us, 3.84 us, 3.83 us, 4.00 us, 3.98 us
Run 31: warmup (20): 4.29 us (+11%), 4.05 us, 4.04 us, 4.67 us (+21%), 3.95 us, 3.95 us, 3.87 us, 3.88 us, 3.85 us, 3.83 us, 3.89 us, 4.09 us (+6%), 3.87 us, 3.86 us, 3.91 us, 3.86 us, 3.88 us, 3.86 us, 3.89 us, 3.84 us; samples (50): 3.87 us, 3.92 us, 3.84 us, 3.87 us, 3.84 us, 3.86 us, 3.84 us, 3.86 us, 3.81 us, 3.81 us, 5.09 us (+32%), 3.94 us, 3.83 us, 3.85 us, 3.89 us, 3.83 us, 3.90 us, 3.85 us, 3.89 us, 3.86 us, 3.85 us, 3.82 us, 3.86 us, 3.83 us, 3.82 us, 3.79 us, 3.79 us, 3.80 us, 3.89 us, 3.86 us, 3.85 us, 3.91 us, 3.84 us, 3.89 us, 3.80 us, 3.93 us, 4.03 us, 3.93 us, 3.92 us, 3.90 us, 3.90 us, 3.81 us, 3.83 us, 3.87 us, 3.81 us, 3.85 us, 3.93 us, 3.87 us, 3.82 us, 4.30 us (+11%)
Run 32: warmup (20): 3.90 us, 3.92 us, 3.94 us, 3.88 us, 3.88 us, 3.89 us, 3.82 us, 3.86 us, 3.89 us, 3.87 us, 3.85 us, 3.89 us, 3.86 us, 3.84 us, 3.82 us, 3.87 us, 3.86 us, 3.89 us, 3.87 us, 3.88 us; samples (50): 3.88 us, 3.88 us, 3.84 us, 3.89 us, 3.82 us, 3.89 us, 3.80 us, 3.92 us, 3.87 us, 3.88 us, 3.88 us, 3.88 us, 3.86 us, 3.90 us, 3.91 us, 3.88 us, 3.94 us, 3.95 us, 3.95 us, 3.92 us, 3.90 us, 3.87 us, 3.94 us, 3.88 us, 3.92 us, 3.87 us, 3.90 us, 3.95 us, 3.88 us, 3.87 us, 3.90 us, 3.89 us, 3.90 us, 3.84 us, 3.88 us, 3.89 us, 3.88 us, 3.87 us, 3.92 us, 3.88 us, 3.86 us, 3.83 us, 3.88 us, 3.85 us, 3.88 us, 3.88 us, 3.88 us, 3.85 us, 3.93 us, 3.85 us
Run 33: warmup (20): 4.10 us (+6%), 3.86 us, 3.90 us, 4.01 us, 4.02 us, 3.93 us, 5.40 us (+39%), 5.31 us (+37%), 4.17 us (+8%), 3.92 us, 3.88 us, 3.86 us, 3.90 us, 3.84 us, 3.87 us, 3.92 us, 3.88 us, 3.86 us, 3.92 us, 3.89 us; samples (50): 3.89 us, 4.87 us (+26%), 3.85 us, 3.90 us, 3.88 us, 3.88 us, 4.05 us, 4.26 us (+10%), 3.89 us, 3.88 us, 4.12 us (+6%), 4.51 us (+17%), 4.09 us (+6%), 4.77 us (+23%), 3.90 us, 3.88 us, 3.96 us, 3.98 us, 3.87 us, 3.90 us, 3.85 us, 3.97 us, 3.88 us, 3.84 us, 3.99 us, 3.85 us, 3.84 us, 4.96 us (+28%), 4.87 us (+26%), 3.91 us, 3.91 us, 4.16 us (+7%), 5.23 us (+35%), 3.86 us, 3.85 us, 4.39 us (+14%), 8.08 us (+109%), 5.39 us (+39%), 3.92 us, 4.30 us (+11%), 3.80 us, 3.89 us, 4.70 us (+21%), 4.49 us (+16%), 3.94 us, 3.81 us, 3.90 us, 4.17 us (+8%), 4.25 us (+10%), 3.82 us
Run 34: warmup (20): 3.92 us, 4.20 us (+9%), 4.29 us (+11%), 3.99 us, 4.03 us, 4.74 us (+23%), 3.92 us, 3.96 us, 3.94 us, 3.93 us, 3.97 us, 3.99 us, 3.92 us, 3.90 us, 3.88 us, 3.97 us, 3.92 us, 3.89 us, 3.89 us, 3.82 us; samples (50): 4.44 us (+15%), 4.44 us (+15%), 3.85 us, 3.83 us, 3.88 us, 3.90 us, 3.86 us, 3.87 us, 4.04 us, 4.63 us (+20%), 4.08 us (+6%), 3.89 us, 4.21 us (+9%), 4.33 us (+12%), 4.09 us (+6%), 4.32 us (+12%), 4.34 us (+12%), 4.05 us, 3.91 us, 4.13 us (+7%), 4.33 us (+12%), 4.07 us (+5%), 3.92 us, 3.91 us, 3.96 us, 3.94 us, 3.95 us, 3.98 us, 3.97 us, 3.97 us, 3.93 us, 3.91 us, 3.91 us, 3.90 us, 3.88 us, 3.96 us, 3.92 us, 3.87 us, 3.84 us, 3.88 us, 3.86 us, 3.92 us, 3.89 us, 3.90 us, 3.85 us, 3.84 us, 3.85 us, 3.93 us, 3.94 us, 3.90 us
Run 35: warmup (20): 3.78 us, 3.88 us, 3.89 us, 3.91 us, 3.91 us, 3.93 us, 3.91 us, 3.89 us, 3.87 us, 3.90 us, 3.90 us, 3.94 us, 3.89 us, 3.87 us, 3.87 us, 3.90 us, 3.93 us, 3.86 us, 3.88 us, 4.01 us; samples (50): 3.88 us, 3.81 us, 3.86 us, 3.87 us, 3.86 us, 3.85 us, 3.87 us, 3.86 us, 3.82 us, 3.81 us, 3.85 us, 3.84 us, 3.85 us, 3.84 us, 3.84 us, 3.88 us, 3.86 us, 3.89 us, 3.82 us, 3.84 us, 3.90 us, 3.82 us, 3.86 us, 3.84 us, 3.86 us, 3.85 us, 3.89 us, 3.85 us, 3.88 us, 3.85 us, 3.87 us, 3.87 us, 3.87 us, 3.83 us, 3.92 us, 3.89 us, 3.93 us, 3.84 us, 3.87 us, 3.90 us, 3.84 us, 3.83 us, 3.86 us, 3.91 us, 3.91 us, 3.86 us, 3.90 us, 3.86 us, 3.86 us, 3.81 us
Run 36: warmup (20): 3.89 us, 3.91 us, 3.96 us, 3.92 us, 3.99 us, 3.97 us, 3.93 us, 4.16 us (+8%), 4.41 us (+14%), 4.77 us (+23%), 3.91 us, 3.89 us, 3.87 us, 3.99 us, 3.92 us, 3.99 us, 3.95 us, 3.89 us, 3.90 us, 3.86 us; samples (50): 3.85 us, 3.90 us, 3.91 us, 3.89 us, 3.88 us, 3.91 us, 3.94 us, 3.93 us, 3.94 us, 3.90 us, 3.86 us, 3.93 us, 3.87 us, 3.90 us, 3.85 us, 3.93 us, 3.99 us, 4.00 us, 3.93 us, 3.95 us, 3.89 us, 3.86 us, 3.84 us, 3.87 us, 3.86 us, 3.89 us, 3.91 us, 3.87 us, 3.87 us, 3.89 us, 3.90 us, 3.92 us, 3.87 us, 3.89 us, 3.87 us, 3.92 us, 3.89 us, 3.87 us, 3.84 us, 3.86 us, 3.87 us, 4.33 us (+12%), 4.24 us (+10%), 4.34 us (+12%), 4.01 us, 3.85 us, 3.85 us, 4.16 us (+8%), 4.62 us (+20%), 4.54 us (+17%)
Run 37: warmup (20): 3.70 us, 3.88 us, 3.87 us, 3.90 us, 3.89 us, 3.87 us, 3.90 us, 4.10 us (+6%), 4.29 us (+11%), 3.88 us, 3.97 us, 3.87 us, 4.00 us, 4.04 us, 3.98 us, 3.95 us, 3.89 us, 3.90 us, 3.96 us, 3.91 us; samples (50): 3.90 us, 3.91 us, 3.85 us, 3.87 us, 3.87 us, 3.89 us, 3.97 us, 3.84 us, 3.98 us, 3.90 us, 3.91 us, 3.88 us, 3.84 us, 3.91 us, 3.98 us, 3.88 us, 3.91 us, 3.91 us, 3.93 us, 3.92 us, 3.91 us, 3.95 us, 3.93 us, 3.89 us, 3.88 us, 3.89 us, 3.90 us, 3.90 us, 3.90 us, 4.01 us, 3.88 us, 3.88 us, 3.80 us, 3.84 us, 3.83 us, 3.79 us, 3.80 us, 3.77 us, 3.77 us, 3.86 us, 3.76 us, 3.74 us, 3.76 us, 3.78 us, 3.75 us, 3.77 us, 3.75 us, 3.75 us, 3.74 us, 3.73 us
Run 38: warmup (20): 3.90 us, 3.98 us, 3.92 us, 4.00 us, 3.94 us, 4.30 us (+11%), 3.96 us, 4.00 us, 3.95 us, 4.11 us (+6%), 4.76 us (+23%), 4.50 us (+16%), 4.75 us (+23%), 4.53 us (+17%), 4.60 us (+19%), 4.75 us (+23%), 4.79 us (+24%), 4.57 us (+18%), 4.52 us (+17%), 4.45 us (+15%); samples (50): 4.47 us (+16%), 4.46 us (+15%), 4.88 us (+26%), 4.49 us (+16%), 4.54 us (+17%), 4.02 us, 3.96 us, 3.89 us, 4.07 us (+5%), 4.09 us (+6%), 4.06 us, 5.36 us (+38%), 3.91 us, 4.09 us (+6%), 4.45 us (+15%), 4.02 us, 3.90 us, 3.96 us, 3.90 us, 3.93 us, 4.37 us (+13%), 4.20 us (+8%), 4.24 us (+10%), 5.13 us (+33%), 5.43 us (+41%), 4.18 us (+8%), 4.01 us, 4.16 us (+7%), 3.96 us, 3.97 us, 3.91 us, 4.01 us, 4.00 us, 4.09 us (+6%), 4.01 us, 3.93 us, 3.97 us, 3.89 us, 3.91 us, 3.87 us, 3.91 us, 5.40 us (+40%), 6.18 us (+60%), 5.44 us (+41%), 3.94 us, 3.92 us, 3.84 us, 3.87 us, 3.86 us, 3.97 us
Run 39: warmup (20): 3.79 us, 3.80 us, 3.81 us, 3.78 us, 3.79 us, 4.32 us (+12%), 3.72 us, 3.72 us, 3.70 us, 3.72 us, 3.71 us, 3.74 us, 3.73 us, 3.75 us, 3.74 us, 3.76 us, 3.75 us, 3.80 us, 3.71 us, 3.75 us; samples (50): 3.73 us, 3.72 us, 3.72 us, 3.71 us, 3.75 us, 3.75 us, 3.74 us, 3.75 us, 3.78 us, 3.82 us, 3.78 us, 3.75 us, 3.78 us, 3.75 us, 3.82 us, 3.79 us, 3.78 us, 3.75 us, 3.74 us, 3.74 us, 3.72 us, 3.72 us, 3.76 us, 3.72 us, 3.73 us, 3.77 us, 3.74 us, 3.74 us, 3.77 us, 3.75 us, 3.78 us, 3.75 us, 3.72 us, 3.72 us, 3.75 us, 3.76 us, 3.72 us, 3.72 us, 3.76 us, 3.78 us, 3.74 us, 3.78 us, 3.73 us, 3.72 us, 3.78 us, 3.75 us, 3.84 us, 4.90 us (+27%), 4.40 us (+14%), 3.85 us
Run 40: warmup (20): 3.82 us, 3.99 us, 3.71 us, 3.72 us, 3.73 us, 3.75 us, 3.78 us, 3.71 us, 3.66 us (-5%), 3.72 us, 3.69 us, 3.72 us, 3.69 us, 3.71 us, 3.66 us (-5%), 3.69 us, 3.68 us, 3.68 us, 3.71 us, 3.74 us; samples (50): 3.70 us, 3.73 us, 3.71 us, 3.75 us, 3.73 us, 3.67 us (-5%), 4.49 us (+16%), 3.82 us, 3.82 us, 3.81 us, 3.76 us, 3.79 us, 3.78 us, 3.80 us, 3.83 us, 3.82 us, 3.77 us, 3.99 us, 3.77 us, 3.79 us, 3.74 us, 3.84 us, 3.78 us, 3.78 us, 3.75 us, 3.88 us, 4.18 us (+8%), 3.86 us, 3.74 us, 3.76 us, 3.80 us, 3.79 us, 3.80 us, 3.74 us, 3.75 us, 3.70 us, 3.73 us, 3.77 us, 4.63 us (+20%), 4.16 us (+8%), 4.01 us, 3.82 us, 3.75 us, 3.78 us, 4.26 us (+10%), 4.33 us (+12%), 3.81 us, 3.82 us, 3.83 us, 3.76 us

3.42 us:   10 #
3.66 us: 1165 #################################################################
3.90 us:  440 #########################
4.15 us:  140 ########
4.39 us:   66 ####
4.64 us:   34 ##
4.88 us:   37 ##
5.12 us:   20 #
5.37 us:   17 #
5.61 us:    6 |
5.86 us:   18 #
6.10 us:   14 #
6.34 us:   11 #
6.59 us:   13 #
6.83 us:    2 |
7.08 us:    0 |
7.32 us:    2 |
7.56 us:    1 |
7.81 us:    0 |
8.05 us:    2 |
8.29 us:    2 |

WARNING: the benchmark seems unstable, the standard deviation is high (stdev/median: 15%)
Try to rerun the benchmark with more runs, samples and/or loops

Median +- std dev: 3.87 us +- 0.57 us

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I didn't mean a single top-level set-item was really an issue. rather IIRC the low-level routine that actaully sets a single value is being called in-cython multiple times.

@jreback jreback added the Indexing Related to indexing on series/frames, not to indexes themselves label Oct 6, 2016
@codecov-io
Copy link

codecov-io commented Oct 6, 2016

Current coverage is 85.25% (diff: 100%)

Merging #14359 into master will not change coverage

@@             master     #14359   diff @@
==========================================
  Files           140        140          
  Lines         50655      50655          
  Methods           0          0          
  Messages          0          0          
  Branches          0          0          
==========================================
  Hits          43185      43185          
  Misses         7470       7470          
  Partials          0          0          

Powered by Codecov. Last update 233d51d...9925327

@@ -0,0 +1,84 @@
.. _whatsnew_0191:
Copy link
Contributor

@jreback jreback Oct 7, 2016

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

pls remove this is already done

"""
Evaluate possibly callable input using obj and kwargs if it is callable,
otherwise return as it is
"""
if callable(maybe_callable):
if __callable(maybe_callable):
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

? this is obfuscuating

@@ -711,67 +711,69 @@ def _get_values(self, indexer):
except Exception:
return self._values[indexer]

def __setitem__(self, key, value):
key = com._apply_if_callable(key, self)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why do you need to do it this way? this makes things even more complicated

@llllllllll
Copy link
Contributor Author

Sorry about the misunderstanding around setitem vs the inner function. I will undo the micro optimizations in python and create a safe/unsafe version of the cython function. The places where we are doing things in a loop can do a check once and delegate to the unsafe version where the spot calls can use the checked version.

@llllllllll
Copy link
Contributor Author

rebased to fix conflict in whatsnew

@@ -997,7 +1001,9 @@ cpdef ndarray[object] astype_str(ndarray arr):
ndarray[object] result = np.empty(n, dtype=object)

for i in range(n):
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this should simply be checked once for the array (and don't call the unsafe function)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We don't need an explicit check because we created this array with np.empty so it is mutable. The unsafe version of the function is the one that doesn't do the writeable check so this does what you describe unless I am missing something.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

right, I read them backwards.....ok

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

so perf basically the same then for non-readonly arrays?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

On this line, it is always readonly. The only places where we call this in a loop are with known writeable arrays created by empty. In those cases we are going through the exact same code path as before, the function was just renamed to set_value_at_unsafe. In the other case, we were only doing scalar assignments so there was no looping. Those pay a very slight penalty to check the flags but in almost all cases it will return true. Also the main cost of that is dereferencing the array object but we do that in the expected case anyways.

@@ -986,7 +988,9 @@ cpdef ndarray[object] astype_unicode(ndarray arr):
ndarray[object] result = np.empty(n, dtype=object)

for i in range(n):
util.set_value_at(result, i, unicode(arr[i]))
# we can use the unsafe version because we know `result` is mutable
# since it was created from `np.empty`
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

same here (and anywhere there is a range)

@jreback jreback added this to the 0.19.1 milestone Oct 24, 2016
@jreback jreback closed this in 5cf6d94 Oct 24, 2016
@jreback
Copy link
Contributor

jreback commented Oct 24, 2016

thanks!

maybe make an issue on pandas2 repo about this (IIRC you made a comment already), so that this is not forgotton.

@llllllllll
Copy link
Contributor Author

Thank you! I think this is not an issue in pandas2 because series is backed with a pandas.Array instead of an ndarray.

jorisvandenbossche pushed a commit to jorisvandenbossche/pandas that referenced this pull request Nov 2, 2016
… series

Author: Joe Jevnik <[email protected]>

Closes pandas-dev#14359 from llllllllll/series-setitem and squashes the following commits:

9925327 [Joe Jevnik] BUG: fix a bug in Series.__setitem__ that allowed the mutatation of read-only arrays

(cherry picked from commit 5cf6d94)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Indexing Related to indexing on series/frames, not to indexes themselves
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants