The `arr != arr` based method shown in https://github.com/pydata/pandas/issues/5183 is both [faster](https://gist.github.com/unutbu/7070533) and [more memory efficient](https://gist.github.com/unutbu/7070547). The problem is that my implementation of the faster, more memory efficient method [does not pass this test](https://gist.github.com/unutbu/7070565):

     left = pd.Float64Index([1.0, 2.0, 3.0, 4.0, 5.0, 6.0, nan], dtype='object')
     right = pd.Float64Index([1.0, 2.0, 3.0, 4.0, 5.0, 6.0, nan], dtype='object')

     print(array_equivalent(left, right))
     # True
     print(array_equivalent2(left, right))
     # False

     print(left != left)
     # [False False False False False False False]