block mutation of read-only array in series #14359

Closed
wants to merge 1 commit into
from

Conversation

Projects
None yet
4 participants
Contributor

llllllllll commented Oct 5, 2016

  • 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
Contributor

llllllllll commented Oct 5, 2016

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.

Contributor

chris-b1 commented Oct 6, 2016 edited

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

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

Contributor

chris-b1 commented Oct 6, 2016

Working on this in #14363

doc/source/whatsnew/v0.20.0.txt
@@ -79,3 +79,6 @@ Performance Improvements
Bug Fixes
~~~~~~~~~
+
+- Bug in ``Series.__setitem__`` which allowed mutating arrays read-only arrays
@jreback

jreback Oct 6, 2016

Contributor

move to 0.19.1

pandas/src/util.pxd
@@ -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):
@jreback

jreback Oct 6, 2016

Contributor

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)

pandas/src/util.pxd
@@ -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):
@jreback

jreback Oct 6, 2016

Contributor

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

@jreback

jreback Oct 6, 2016

Contributor

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).

@llllllllll

llllllllll Oct 6, 2016

Contributor

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.

@llllllllll

llllllllll Oct 6, 2016

Contributor

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?

@llllllllll

llllllllll Oct 6, 2016

Contributor

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
@jreback

jreback Oct 7, 2016

Contributor

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 added the Indexing label Oct 6, 2016

codecov-io commented Oct 6, 2016 edited

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

doc/source/whatsnew/v0.19.1
@@ -0,0 +1,84 @@
+.. _whatsnew_0191:
@jreback

jreback Oct 7, 2016 edited

Contributor

pls remove this is already done

pandas/core/common.py
"""
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):
@jreback

jreback Oct 7, 2016

Contributor

? this is obfuscuating

pandas/core/series.py
@@ -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)
@jreback

jreback Oct 7, 2016

Contributor

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

jreback referenced this pull request in pandas-dev/pandas2 Oct 7, 2016

Open

lazy array attributes #27

Contributor

llllllllll commented Oct 11, 2016

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.

Contributor

llllllllll commented Oct 24, 2016

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):
@jreback

jreback Oct 24, 2016

Contributor

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

@llllllllll

llllllllll Oct 24, 2016

Contributor

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.

@jreback

jreback Oct 24, 2016

Contributor

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

@jreback

jreback Oct 24, 2016

Contributor

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

@llllllllll

llllllllll Oct 24, 2016

Contributor

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`
@jreback

jreback Oct 24, 2016

Contributor

same here (and anywhere there is a range)

jreback added this to the 0.19.1 milestone Oct 24, 2016

jreback closed this in 5cf6d94 Oct 24, 2016

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.

Contributor

llllllllll commented Oct 24, 2016

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

@jorisvandenbossche jorisvandenbossche added a commit to jorisvandenbossche/pandas that referenced this pull request Nov 2, 2016

@llllllllll @jorisvandenbossche llllllllll + jorisvandenbossche [Backport #14359] BUG: block mutation of read-only array in series
Author: Joe Jevnik <joe@quantopian.com>

Closes #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)
4419907

@amolkahat amolkahat added a commit to amolkahat/pandas that referenced this pull request Nov 26, 2016

@llllllllll @amolkahat llllllllll + amolkahat BUG: block mutation of read-only array in series
Author: Joe Jevnik <joe@quantopian.com>

Closes #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
09d4670
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment