Welcome to Gaming! Come chat with us in the GoatChat network (desktop users click here). We also have an Official Steam Group.
All sub rules are defined in detail here and open for feedback
-
Submissions must be related to gaming.
-
Titles must be clear and reflect content of the submission. Include game titles where necessary.
-
No Clickbait (defined).
-
No links to illegal torrents or other illegal downloads/content.
-
No link posts to merchandise and/or unrelated products (exceptions).
-
Mark all spoilers with: [](#s "Text goes here")
-
Mark all NSFW posts appropriately.
-
Submissions reposted within 6 months will be removed.
Content creators, please read our community Content Creator Guidelines
What you're encouraged to post:
Games! We should talk about games more than anything! New releases, old favorites, Speed Runs, Let's Play's, development news, what we love, what we hate and so on and so forth.
Try to post things that create discussion. We want people to feel engaged and feel their voices are heard, rather than to be a place of disposable content.
If you're not sure, ask!
If you wish to, you can archive your posts here.
Check out v/gaming's megathread of gaming-related subverses
view the rest of the comments →
[–] rwbj 0 points 1 point 1 point (+1|-0) ago
C# is by no means less performant than even something like native C++ now a days. That hasn't been the case for years. Feel free to Google for benchmarks. You won't find many done in the past 6 or so years as once the difference became completely negligible benchmarks no longer served much purpose. Of course you are right though that there has been a dramatic spike in the number of games and developers using C#, and so of the proportion of all games using C# - including poorly optimized ones - has increased.
[–] enneract ago
How can a managed language possibly be as fast as native code? All the run-time checks and especially garbage collection aren't free.
[–] rwbj 0 points 1 point 1 point (+1|-0) ago
The garbage collector is pretty smart. It's not just going to randomly start arbitrarily running. It waits until it absolutely has to. It's also now nonblocking/asynchronous which makes it extremely low cost in most practical scenarios. The same is true of the run-time stuff. For instance in most practical scenarios where you're iterating on a non-mutated value, the bounds checks will be able to be completely optimized away. And even when it isn't able to be optimized away most modern architectures are going to be doing predictive execution (and other little tricks) that makes the check practically free.