PERF: Improve perf initalizing DataFrame with a range
Performance improvement when initalizing a DataFrame with a range:

```python
>>> %timeit pd.DataFrame(range(1_000_000)) 
347 ms ± 4.46 ms per loop  # master
5.98 ms ± 61.9 µs per loop  # this PR
# other initialization types don't seem to be affected by this problem:
>>> %timeit pd.Series(range(1_000_000))
5.75 ms ± 27.6 µs per loop  # master and this PR
>>> %t pd.DataFrame({"a": range(1_000_000)})
11.2 ms ± 119 µs per loop  # master and this PR
```

Can you check we already have a test for this construction? nice.  does this need/merit an asv? > 
> 
> Can you check we already have a test for this construction?

It's tested in ``pandas\tests\frame\test_constructors.py`` line 1079 and used in a few more places. > nice. does this need/merit an asv?

IMO that would not be really important, though I'm not against it either. This pattern is probably mostly used interactively, in ipython and jupyter etc. and little otherwise.
 bugs can certainly be addressed in a followup, but can you add an asv ? I think we have a number of construction asv's already I've added a ASV. I can take on #30173 in a followup for both Series and Dataframes. lgtm. merge on green.