Should read the first sentence in my post before you quote it... What can you do about the software on your end? Nothing. You are arguing over a useless point anyway because no software on a large scale is ever 100% optimized so you can always say software is the bottleneck...duh. Which is why in computer engineering bottleneck is used to describe hardware limitations as it is an accepted fact of life that hardware often needs to run bad code. So what do you do about it? Add more computing power. Sure there are bottlenecks in computer science as well but those are used to describe issues in the code path which is a whole different ballgame.
p.s. Please find a more...appropriate...site for technical lingo than dictionary.com lol