I don't think you'll see any noticeable performance difference between prototypes and singletons in general in the most basic sense.
It's true that there is only one singleton bean instance in the application context, and instances of beans defined with "prototype" scope are created for every request to that bean, however, we're talking about the performance of new object creation and its very cheap these days and optimized for non-expensive objects.
However here are some caveats:
What if the Constructor of the bean calls some pretty expensive code, its not spring's fault of course, because the programmer wrote the code this way, but still, actually, some pretty expensive code will be called every time the bean is created and it can drain the performance.
Slightly more interesting: we usually don't place code like this in consturctor, instead we use "lifecyle" methods like @PostConstruct / @PreDestroy.
For Singletons spring will call the post-construct method once when it creates a singleton and after that will place the bean onto the application context.
When the application context gets closes (usually when the app shuts down) the pre-destroy method is called to free up the resources, etc.
However, with Prototype scoped beans it's not the case:
Spring creates them upon every request to the bean, then calls the post-construct method, again for every single instance of the bean it creates, then doesn't store the instance in the application context. This means that spring doesn't call at all pre-destroy methods (because it doesn't have a clue who are these objects, it doesn't really manage them after they're created).
So this can (again, not spring's fault) lead to serious performance differences between the two.
If we'll take it further, sometimes spring has to wrap the object into some sort of proxy. These proxies are usually done with java.lang.Proxy in case of interfaces or with Cglib which is based on inheritance. Now this fact alone, when we're talking about wrapping prototype-scoped beans into proxy, can become a source of the serious difference in performance because Proxies are generated in runtime and Wrapping an Object with proxy (especially with CGlib) is pretty expensive.