BUG: 'display.max_rows' = None causes large slowdown without dataframe print calls
#### Code Sample

```python

import pandas as pd
import numpy as np

pd.set_option("display.max_rows", None)
df = pd.DataFrame(np.random.randint(0,100,size=(10000, 100)), columns=np.arange(0,100))

```

```python
print(df.columns)
dir(df)
```

#### Problem description

Changing the display option for max rows to `None` (unlimited) dramatically increases execution time of calls in the console that do not display rows. I observed similar results accessing attributes of non-pandas objects.

#### Expected Output

Execution time increase resulting from `display.max_rows` should only be incurred when rows are displayed.
