Increasing the number of shards, might, depending on usage, decrease performance. There is an overhead cost of using sharding, for example that each shard might have to retrieve N documents to be able to satisfy the "give me N rows" requirement (since one shard might contain all the documents in the result set). For faceting this will have to generate facets on each shard, then join them on the shard that answers the query, creating another overhead factor.
You might also want to look into the cache performance, to see if you're ejecting the cache each and every time (.. and keep in mind that you'll have one cache for each shard).
The only usable answer for your requirement is "try and see" (experiment with the different sizes). I'd try to avoid creating artificial, local shards if possible. Sharding is useful to distribute an index across several servers and not internally on one server (although there are use cases for that as well - but it's not performance as far as I know).
See SolrPerformanceProblems and SolrPerformanceFactors