PERF: put BlockManager constructor in cython
No idea why mypy started complaining about the io.parsers stuff
can you merge master any perf on this vs master (now that the ndarray stuff is merged)? (ideally put the relevant timeits in the cython code, that is a great idea generally) > any perf on this vs master (now that the ndarray stuff is merged)? (ideally put the relevant timeits in the cython code, that is a great idea generally)

On the [benchmark](https://github.com/pandas-dev/pandas/pull/40171#issuecomment-790219422) I've been using for these im seeing about a 4% gain (though the worst performance had a 0.2% slowdown).  The big win I'm expecting comes in the next step, which puts BlockManager.get_slice in cython, which allows us to chain together several no-longer-python calls rebased + green Just measured the branch after this (that implements BlockManager.get_slice in cython) and that gets a 15% improvement. > On the benchmark I've been using for these im seeing about a 4% gain

As I have mentioned before (eg on the mailing list, in https://github.com/pandas-dev/pandas/issues/40263), this benchmark is basically useless / unrealistic. 
I think you should benchmark with an actual applied function to check wether it is worth moving things to cython for this. 