4 ms·
FYI: If you're primarily IO-heavy, the GC pauses aren't going to be a big deal. Something like NodeJS (or Async .Net) will have great performance; even with gar
by gwbas1c 4y ago
FYI: If you're primarily IO-heavy, the GC pauses aren't going to be a big deal. Something like NodeJS (or Async .Net) will have great performance; even with garbage collection. (IO-heavy is the specific use case that NodeJS was designed to handle.)
GC pauses really become a problem when you have long-lived objects in RAM. A generational GC (which pretty much all of them are) is designed to collect short-lived objects extremely fast.
Rust definitely has its use; but in the case of a startup making an IO-heavy product, you're going to be better off spending your precious resources on a slightly faster computer instead of struggling with Rust's learning curve.
- staticassertion 4y ago> FYI: If you're primarily IO-heavy, the GC pauses aren't going to be a big deal. Something like NodeJS (or Async .Net) will have great performance; even with garbage collection. (IO-heavy is the specific use case that NodeJS was designed to handle.) This just isn't true. Node is pretty terrible even at IO heavy workloads, especially if you have servers with many cores. Any benchmark will confirm this.
- hu3 4y agoTheir point is that GC is fine. Your're focusing on one of the suggestions: nodejs. But .NET or Go are very fast for typical I/O bound workloads.
- staticassertion 4y agoYes, that's why I quoted one specific part and responded to that specific part.
- hu3 4y agoNo you included the GC part too: > FYI: If you're primarily IO-heavy, the GC pauses aren't going to be a big deal. To further my point: .NET and Java are amazing when it comes to performance for most cases. You get a mature ecosystem, large developer pool, fast runtime and all the comfort that GC offers. I'd argue that choosing Rust for most startups is outright irresponsible.
- staticassertion 4y agoYeah fair, in my mind I was just responding to the bit about node, but whatever. > I'd argue that choosing Rust for most startups is outright irresponsible. I feel the opposite and I run a startup using Rust. If I could go back I'd use Rust in more places, not fewer.
- hu3 4y agoRust, Python and Go. Props to you for being sensible with technology choice. https://github.com/grapl-security/grapl https://github.com/grapl-security/grapl https://github.com/grapl-security/pulumi-hcp https://github.com/grapl-security/pulumi-hcp Whish you guys success.
- staticassertion 4y agoMuch appreciated
- ithrow 4y agoIs not Java or Go but surely beats the pants out of Ruby/Python, and then, Ruby/Python has been wildly successful for lots apps/companies.
- staticassertion 4y agoOf course. It's also better than solving problems with pen and paper.
- collaborative 4y agoNot to be a pain but Node has its place in distributed, single-core servers
- mstump 4y agoThis is sort of highlighted by other comments, but GC is only good at small quick requests. If you're dealing with large or slow requests it results in large or long lived allocations which causes havoc with GC. This is true for any generational GC, Java included. Also node will only perform well if that IO is offloaded to the kernel or CPP code and behind a future via epoll etc... If it's in the actual node runtime it'll perform poorly because it'll block the thread.
- smolder 4y agoI don't necessarily agree. Depending on what kind of IO they're doing, the latency and consistency of latency from a rust service can be so much better while requiring so much less in terms of computing resources that it actually sets their business apart, attracting customers based on quality or saving them enough money on infra bills to hire more salespeople. It can be a big difference in performance. I have done comparisons across rust, node, java, c# and strongly believe rust is worth it for performance-criticial code, and rust is subjectively very enjoyable to write, for me. I really want a job doing it and so admittedly the "it's too hard" attitude is a thorn in my side.
- cinntaile 4y agoAre there any good books that talk about this? When when to use what, what the bottlenecks are and how they are resolved? Maybe on a more abstract plane than if IO-heavy use NodeJS, more like what to look for?