Depends on your use case and target machines!
Each one of those can provide you with a solution, it all really depends what you want to do with your 100K meshes.
The SPS performance is directly related to the global number of vertices (not of objects). A sphere has a big number of vertices. If used with the SPS, it should probably reduced (ex : less segments).
That said, one million objects is really a huge number and the user won’t be able to see them at once in the screen anyway. I would then recommend to manage way far less visible objects and recycle them to render them on the screen when the camera/user moves, or when the objects themselves move.
In this example, by instance, “only” 3000 different objects (solid particles) are used to render more than 70K objects from a map : Test Babylon SP Terrain
They are just recycled according to the current camera position.