there is no single number, it will depend on available memory, number of rows and number of people running your procedure simultaneously - you might be able to load 20,000 rows just fine, but can 50 people all at once?
There is a diminishing return though. I suggest starting small, around 100 or so and then doubling until you reach a point that the performance gains aren't significantly useful anymore and then compare to your expected scaling needs