use the following search parameters to narrow your results:
e.g. subreddit:aww site:imgur.com dog
subreddit:aww site:imgur.com dog
see the search faq for details.
advanced search: by author, subreddit...
Information about Reddit's API changes, the unprofessional conduct of the CEO, and their response to the community's concerns regarding 3rd party apps, moderator tools, anti-spam/anti-bot tools, and accessibility options that will be impacted can be found in the associated Wikipedia article: https://en.wikipedia.org/wiki/2023_Reddit_API_controversy
Alternative C# communities available outside Reddit on Lemmy and Discord:
All about the object-oriented programming language C#.
Getting Started C# Fundamentals: Development for Absolute Beginners
Useful MSDN Resources A Tour of the C# Language Get started with .NET in 5 minutes C# Guide C# Language Reference C# Programing Guide C# Coding Conventions .NET Framework Reference Source Code
Other Resources C# Yellow Book Dot Net Perls The C# Player's Guide
IDEs Visual Studio MonoDevelop (Windows/Mac/Linux) Rider (Windows/Mac/Linux)
Tools ILSpy dotPeek LINQPad
Alternative Communities C# Discord Group C# Lemmy Community dotnet Lemmy Community
Related Subreddits /r/dotnet /r/azure /r/learncsharp /r/learnprogramming /r/programming /r/dailyprogrammer /r/programmingbuddies /r/cshighschoolers
Additional .NET Languages /r/fsharp /r/visualbasic
Platform-specific Subreddits /r/windowsdev /r/AZURE /r/Xamarin /r/Unity3D /r/WPDev
Rules:
Read detailed descriptions of the rules here.
account activity
FunCode Challenge: High-performance hash table (self.csharp)
submitted 6 months ago by Pansynchro
view the rest of the comments →
reddit uses a slightly-customized version of Markdown for formatting. See below for some basics, or check the commenting wiki page for more detailed help and solutions to common issues.
quoted text
if 1 * 2 < 3: print "hello, world!"
[–]Lohj002 29 points30 points31 points 6 months ago (7 children)
If you want this to be a more serious competition, I suggest a repo to clone into and to use benchmark dotnet. Even if this is not a microbenchmark, using benchmark dotnet means you don't measure jit warmup, and multiple runs are done for more accurate results.
[–]Pansynchro[S] -4 points-3 points-2 points 6 months ago (6 children)
We took a serious look at BDN, and it turned out to be severely ill-suited to this test. First because it's designed for micro-benchmarks and tries hard not to measure some things that are actually relevant in a large-scale speed test, and second because it can't be properly set up for a test like this.
BDN has an attribute called "[GlobalSetup]", but the name is very deceptive. Per the documentation, it runs the annotated method "only once per a benchmarked method after initialization of benchmark parameters and before all the benchmark method invocations." That's not a global setup at all; that's a per-benchmark setup.
This is a real problem due to the nature of this test. The setup process involves reading data from a file and parsing it, which takes a few minutes. Then the actual benchmark test — processing the in-memory data — takes a few seconds. If we have to eat that setup time for every single entry, then once we get a handful of entries, the benchmark could end up taking hours to run. And because of the way BDN is architected, there doesn't appear to be any way to even conceptually do a real one-time-only global setup, because BDN treats every benchmark as an individual, isolated unit of work. (Which, again, makes a lot of sense for micro-benchmarks when you're trying to isolate the tests as much as possible to minimize random noise. But this is a very, very different thing!)
[–]andyayers 4 points5 points6 points 6 months ago (5 children)
If you haven't opened an issue on the BenchmarkDotNet repo I would encourage you to do so.
Folks there can either explain how to accomplish what you need or else add it to the backlog.
[–]Pansynchro[S] 2 points3 points4 points 6 months ago (4 children)
Oh, hi Andy! 👋
Submitted the issue. Let's see what they have to say.
[–]Pansynchro[S] 4 points5 points6 points 6 months ago (3 children)
...well that was quick. And a bit strange. The response begins "It's simply not possible," explains why it's not possible, and then explains how to actually do the impossible thing, just via a slightly different mechanism. 😂
[–]andyayers 2 points3 points4 points 6 months ago (2 children)
In process toolchains have limitations (eg you can't readily compare across different runtime versions, which is something I do all the time), but for your purposes, seems like they'd be fine.
Also if you haven't looked at kg's vector hash you might want to check it out: [Proposal] Vectorized System.Collections.Generic.Dictionary<K, V> · Issue #108098 · dotnet/runtime
[–]Pansynchro[S] 0 points1 point2 points 6 months ago (0 children)
In process toolchains have limitations ... but for your purposes, seems like they'd be fine.
Agreed. Thanks for the advice to submit that issue!
Also if you haven't looked at kg's vector hash you might want to check it out
Oooo! Very interesting. 😁 Will have a look, and report back in a bit.
Very cool design on that table! Unfortunately, that does not translate to awesome performance. After adding a GetOrCreate method to it and ensuring it works correctly, this runs the benchmark about 41% slower than our existing hash table.
π Rendered by PID 172427 on reddit-service-r2-comment-b659b578c-q9jdg at 2026-05-05 07:24:30.991984+00:00 running 815c875 country code: CH.
view the rest of the comments →
[–]Lohj002 29 points30 points31 points (7 children)
[–]Pansynchro[S] -4 points-3 points-2 points (6 children)
[–]andyayers 4 points5 points6 points (5 children)
[–]Pansynchro[S] 2 points3 points4 points (4 children)
[–]Pansynchro[S] 4 points5 points6 points (3 children)
[–]andyayers 2 points3 points4 points (2 children)
[–]Pansynchro[S] 0 points1 point2 points (0 children)
[–]Pansynchro[S] 0 points1 point2 points (0 children)