pydata/pandas — pull request #6597 by unutbu (2014-03-11 12:26:58+00:00)
Title: FIX: Bug whereby array_equivalent was not correctly comparing Float64Ind...

Currently,
```
>>> import pandas.core.common as com
>>> com.array_equivalent(Float64Index([0, np.nan]), Float64Index([0, np.nan]))
False
```
Although the current pandas code base does not use `array_equivalent` to compare Float64Indexes, leaving `array_equivalent` in its current state may be a bug waiting to happen.

This PR attempts to fix the problem by using `pd.isnull` for all arrays of dtype `object`. In a previous PR I tried this and got terrible perf results. Since then I've discovered that my machine does not have enough memory to run the full perf test suit without page faults. If I rerun `test_perf.sh` for just a few Benchmarks, I can avoid the page faults and get consistent results.

Running `/usr/bin/time -v ./test_perf.sh -b master -t fix-equivalent` yielded two tests with ratio > 1.2.

```-------------------------------------------------------------------------------
frame_ctor_dtindex_BQuarterBegin(2) | 0.5777 | 0.3544 | 1.6302 |
frame_ctor_dtindex_Day(1) | 1.4667 | 0.8710 | 1.6839 |
-------------------------------------------------------------------------------
Test name | head[ms] | base[ms] | ratio |
-------------------------------------------------------------------------------
```

which I believe were due to page faults. When I reran perf on just these tests using
`/usr/bin/time -v ./test_perf.sh -b master -t fix-equivalent -r "frame_ctor_dtindex_BQuarterBegin|frame_ctor_dtindex_Day"`
I got

```-------------------------------------------------------------------------------
Test name | head[ms] | base[ms] | ratio |
-------------------------------------------------------------------------------
frame_ctor_dtindex_BQuarterBegin(1) | 1.0796 | 1.1120 | 0.9709 |
frame_ctor_dtindex_Day(1) | 0.8413 | 0.8603 | 0.9779 |
frame_ctor_dtindex_BQuarterBegin(2) | 0.3477 | 0.3537 | 0.9831 |
frame_ctor_dtindex_Day(2) | 0.8399 | 0.8527 | 0.9851 |
-------------------------------------------------------------------------------
Test name | head[ms] | base[ms] | ratio |
-------------------------------------------------------------------------------```