50,000 sprites is a lot. Seriously, a lot. My computer can only manage 100,000 invisible or offscreen sprites total without any code or behaviors at all before it dips below vsync. It isn't your GPU getting slammed, it's the CPU. An instance of an object requires some CPU time, even with no code. If you do any sort of checking on that many sprites, your game's framerate is going to take a massive nosedive.
If you want tons of objects about (like bullet casings or tiles or something) I suggest instead saving their locations and any relevant info to an array and deleting them when they're offscreen, then recreating them when they would be onscreen again.
More info in this thread:
Edit: You're probably doing collision checks - if you set the offscreen sprites' collision mode to 'none' that might help somewhat, but it's still a lot of checking to do.