4 ms·
Hearing them describe this "C-like Java", I'm surprised C# wasn't a better fit given that it has value-type "structs" that don't have to sit behind a reference
by brundolf 6y ago
Hearing them describe this "C-like Java", I'm surprised C# wasn't a better fit given that it has value-type "structs" that don't have to sit behind a reference on the heap. As far as I know, Java still doesn't have an equivalent feature.
Maybe the JVM's GC is just so much faster that it's worth it?
- jmnicolas 6y ago.NET was slower than the JVM before .NET Core but nowadays it's faster.
- natchy 6y ago.net core is old now as if this last month. Now it’s just .Net 5, which is faster still.
- jmnicolas 6y agoDid I miss the announcement? But AFAIK .NET 5 isn't production ready yet.
- littlecranky67 6y ago.NET 5 was released Nov 10th: https://devblogs.microsoft.com/dotnet/announcing-net-5-0/ https://devblogs.microsoft.com/dotnet/announcing-net-5-0/
- zokula 6y ago> .NET was slower than the JVM before .NET Core but nowadays it's faster. Nope .NET is still slower than molasses in comparison to most JVM implementations.
- samfisher83 6y agohttps://benchmarksgame-team.pages.debian.net/benchmarksgame/fastest/csharp.html https://benchmarksgame-team.pages.debian.net/benchmarksgame/... .net core is generally faster than java at this point.
- littlecranky67 6y agoAm also wondering (I have no experience on that matter) how .NET performs in terms of GC as I remember at some point they introduced a threaded GC that dropped the stop-the-world approach and perform garbage collection in dedicated threads. Anyone got some insights?
- gameswithgo 6y agoits on par with the jvm but still has to stop the world sometimes
- aljarry 6y agoIf you're using "background GC" (new default), they are doing GC in multiple steps, by running part of GC work in another thread - there are still parts which require suspension of managed threads. Here's some more insight: https://devblogs.microsoft.com/premier-developer/understanding-different-gc-modes-with-concurrency-visualizer/ https://devblogs.microsoft.com/premier-developer/understandi...
- jayd16 6y agoAnd put your HFTS at the mercy of windows updates? Joking aside, C# has only become a solid contender after the fairly recent performance improvements and better Linux support. I could be wrong but I doubt a lot of these systems are built on Windows.
- gameswithgo 6y agoJava got popular for HFT before .NET core. c# was just generally slower at the time. It would likely be the preferred choice at this point. Though Rust is really perfect for this kind of thing.
- bluGill 6y agoI'm surprised I haven't heard anything about rust in this area. It seems like it could do well what hft people want without the problems of c++. Though I don't know rust, so I'm not sure how well you can force the correct optimizations.
- DrBazza 6y agoA few things. Java had been heavily used in finance for longer than .NET, so there's experience, and lots of existing code. Java's GC is faster (even if it's not being used in the context of HFT). But probably the most important thing is that .NET on Linux is very new (banks are very conservative, small companies, not so much). .NET on Windows for HFT is a non-starter. In comparison to Linux, you have practically zero control over the OS; you need to turn off unnecessary processes, pin processes to cores, exclude processes from cores and so on. Having said all that, I do know of at least one hedge fund in London that is mostly C#-based (though I have no idea whether their 'deep' trading code is C# though).
- gpderetta 6y agoIf it is what I'm thinking of, I think they were hiring C++ programmers a few years ago.
- DrBazza 6y agoThey are based at the top of Savile Row.
- jacques_chester 6y ago> But probably the most important thing is that .NET on Linux is very new (banks are very conservative, small companies, not so much). They are. However I'd say, based on what I saw at Pivotal, that .NET Core is sweeping all before it. It's faster, less crufty and so on. But the real win is that (1) most of it is familiar to folks with previous .NET experience, but (2) your ops teams can get out of running two very different platforms in Windows and Linux.