I take your message, and change the "Smalltalk" by any other language, and I get a generic excuse for any language.
You can take a prominent ruby website, they will never admit ruby is slow, they cache everything everywhere to do the trick and then blame the algorithm too. Where on a JVM/.net platform the guys could recompute the same stuff 300/s without even needing to think about it, and still having the IO as a bottleneck. The same algorithm would'nt even be necessary in the first place.
BUT there are actually great differences in execution speed (or memory consumption) in languages for the same algorithm.
When your language pales in the benchmark, then you have various choices :
- dismiss the bench as not "real life"
- rewrite the algorithm to bank on the strength of your language (for smalltalk I would bet on the GC)
- count the lines of code (readability is not an objective metric so you can kill it for free). "Yeah but mine is more maintainable".
- admit that this is one weakness of your language and learn other languages for the day you'll need them.
I'm not dismissing your experience (far from it, actually I tend to like "slow languages" too).
I've worked with smalltalk and some friend did crazy stuff with it performance wise, I did crazy stuff in java too.
But
- smalltalk have a slow message dispatch time
- ruby have slow message dispatch and no real GC
- java have too big memory footprint and is too verbose
- O'caml and haskell have unreadable type error messages when you play with inference. And they are statically compiled.
- etc.
perfection doesn't exist, live with it.