Live data from Hacker News

How Raygun increased throughput 20x with .NET Core over Node.js

raygun.com

11–20 of 61 posts

Re: How Raygun increased throughput 20x with .NET Core over Node.js

#11
post #8
post #6

Earlier quoted context omitted.

It's not 30 times faster. Also, it doesn't matter which one is faster unless there is. Huge speed improvement. Your web server is not the bottleneck.

"Your web server is not the bottleneck." - Highly depends on your setup. But removing any 3rd party libraries, and external requests. Generally .NET core is faster.

Actually 3rd party libraries and application code is where .NET is likely to be faster unless node lib is wrapping a C library - .NET can easily beat JS an order of magnitude simply by having control of memory layouts and high performance/specialized data structures. Meanwhile JS has crap structures (doesn't even have primitive arrays) and everything is it's dynamic object where you pray the JIT eventually figures out a constant structure and tries to optimize.

Re: How Raygun increased throughput 20x with .NET Core over Node.js

#12
post #8

Earlier quoted context omitted.

"Your web server is not the bottleneck." - Highly depends on your setup. But removing any 3rd party libraries, and external requests. Generally .NET core is faster.

Actually 3rd party libraries and application code is where .NET is likely to be faster unless node lib is wrapping a C library - .NET can easily beat JS an order of magnitude simply by having control of memory layouts and high performance/specialized data structures. Meanwhile JS has crap structures (doesn't even have primitive arrays) and everything is it's dynamic object where you pray the JIT eventually figures ou…

Yes, but if your going to compare(Badly in this case). You probably want to test it in isolation.

Re: How Raygun increased throughput 20x with .NET Core over Node.js

#13
post #5
post #2

> when we started to look at .NET Core in early 2016, it became quite obvious that being able to asynchronously hand off to our queuing service greatly improved throughput. Unfortunately, at the time, Node.js didn’t provide an easy mechanism to do this, while .NET Core had great concurrency capabilities from day one. This is a mildly maddening article - not because I have any emotional attachment to either platform -…

I agree with you. A bold claim with very vague explanations makes it a bit hard to believe. I'd love to have more details on how they pulled that off.

this is yet the "more detailed" post. Here is the original story https://customers.microsoft.com/en-US/story/raygun which I objected to https://twitter.com/aliostad/status/849186214045528064

Re: How Raygun increased throughput 20x with .NET Core over Node.js

#14
post #8

Earlier quoted context omitted.

"Your web server is not the bottleneck." - Highly depends on your setup. But removing any 3rd party libraries, and external requests. Generally .NET core is faster.

> But removing any 3rd party libraries, and external requests. Generally .NET core is faster. Is that with reference to "faster than .Net regular" or "faster than node.js"? You're right either way but I'm not sure that "it's just faster" is all that relevant. The "Just a basic request/response with barely anything thing in it" case removes anything of interest. For any normal non-trivial, non-demo setup, the web serv…

Some have already optimised the heck out of their data retrieval and writes.

Re: How Raygun increased throughput 20x with .NET Core over Node.js

#15

The fact that they were only getting 1k reqs/sec with Node gives me concern. It clearly shows something went wrong there very early on at a very fundamental level. By no means is Node the end-all be-all for performance by any measure, but you should definitely be getting much much higher throughput than 1k reqs/sec. Simply booting up a single core http server should net you around 4-5k requests per second. Spin up an…

>Simply booting up a single core http server should net you around 4-5k requests per second.

There's no such thing as "requests per second" generally. It's requests per second for a specific workload.

So, whether Node can do 4-5k rps with "hello world" doesn't matter much. It's the same engine that needs to also do the further processing for each fuller request.

Re: How Raygun increased throughput 20x with .NET Core over Node.js

#16
post #14

Earlier quoted context omitted.

> But removing any 3rd party libraries, and external requests. Generally .NET core is faster. Is that with reference to "faster than .Net regular" or "faster than node.js"? You're right either way but I'm not sure that "it's just faster" is all that relevant. The "Just a basic request/response with barely anything thing in it" case removes anything of interest. For any normal non-trivial, non-demo setup, the web serv…

Some have already optimised the heck out of their data retrieval and writes.

> Some have already optimised the heck out of their data retrieval and writes

Then they have likely not very much to gain from framework speedup either.

The fact that raygun could introduce a "asynchronously hand off to our queuing service" says quite clearly that "already optimised data retrieval and writes" is not the case that we are talking about.

Re: How Raygun increased throughput 20x with .NET Core over Node.js

#17
post #15

The fact that they were only getting 1k reqs/sec with Node gives me concern. It clearly shows something went wrong there very early on at a very fundamental level. By no means is Node the end-all be-all for performance by any measure, but you should definitely be getting much much higher throughput than 1k reqs/sec. Simply booting up a single core http server should net you around 4-5k requests per second. Spin up an…

> Simply booting up a single core http server should net you around 4-5k requests per second. There's no such thing as "requests per second" generally. It's requests per second for a specific workload. So, whether Node can do 4-5k rps with "hello world" doesn't matter much. It's the same engine that needs to also do the further processing for each fuller request.

My understanding is that they hand just off the payload to another queueing mechanism. So it just returns ACK and done.

Re: How Raygun increased throughput 20x with .NET Core over Node.js

#18
This, and the AgeOfAscent piece it links to, both read like PR pieces commissioned by Microsoft. Both are absent of actual information to really determine what exactly they were testing, or what this means to anyone else's problem space.

Because, of course, when you get to the fun of benchmarks there's always a faster options. With .NET Core offering them 20,000 requests per second (on a C3.large), that is a terribly low bar to hit. Again, maybe they're doing something amazing, but many frameworks have rates in the seven digits on that sort of hardware. And I know .NET Core can process basic requests in the six digits, so even it is hardly the limiting point, and it comes to the logic.

https://www.techempower.com/benchmarks/#

Still terribly flawed, but better than someone rewriting an app and then gloating about speed improvements.

Re: How Raygun increased throughput 20x with .NET Core over Node.js

#19

The fact that they were only getting 1k reqs/sec with Node gives me concern. It clearly shows something went wrong there very early on at a very fundamental level. By no means is Node the end-all be-all for performance by any measure, but you should definitely be getting much much higher throughput than 1k reqs/sec. Simply booting up a single core http server should net you around 4-5k requests per second. Spin up an…

> The fact that they were only getting 1k reqs/sec with Node gives me concern. It clearly shows something went wrong there very early on at a very fundamental level.

Because the program is performing CPU compute for each request. Node is single threaded.

It's a shame that the Node project killed off the multithreaded web workers pull request. It sorely needs that functionality. Pools of node processes are a poor substitute.

Re: How Raygun increased throughput 20x with .NET Core over Node.js

#20
post #6
post #4

Earlier quoted context omitted.

Just a basic request/response with barely anything thing in it, shows the .NET core is faster than node. https://stackoverflow.com/questions/43920942/unexpected-outc... Obviously this isn't very scientific without a benchmark suite.

It's not 30 times faster. Also, it doesn't matter which one is faster unless there is. Huge speed improvement. Your web server is not the bottleneck.

>It's not 30 times faster.

That's because the empty request doesn't do much. Start adding real work and the statically typed JIT compiled .NET code shows its real teeth.

Post reply on HN