Hacker News new | ask | show | jobs
by piranha 4570 days ago
Go has low number of threads, usually a number of your cores or close to it. Goroutines are not threads.
1 comments

If you have 8 cores, you'll get 8 threads and all your requests will be nicely distributed across the cores. This is why Go is up near the top for the i7 benchmarks. On the EC2 ones, there are far fewer cores, so the overhead of distributing them is much more pronounced. As you add more cores, you'd probably see Go pull further ahead of some of the competition. However if you're only ever going to be running Go on small instances as many people do, this advantage is actually a hindrance because of the added overhead. Not that it's necessarily a big issue or anything, it's just interesting to consider.

The point I was making is that your actual hardware and workload can turn this benchmark on its head. You may naively think you are upgrading performance by switching to a different framework/language, yet if you don't understand why each platform is getting the numbers it does you might end up rewriting your app and actually decreasing performance because of your server hardware.