AspNetCoreDiagnosticScenarios VS hamt

Compare AspNetCoreDiagnosticScenarios vs hamt and see what are their differences.

AspNetCoreDiagnosticScenarios

This repository has examples of broken patterns in ASP.NET Core applications (by davidfowl)
Our great sponsors
  • WorkOS - The modern identity platform for B2B SaaS
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • SaaSHub - Software Alternatives and Reviews
AspNetCoreDiagnosticScenarios hamt
51 7
7,396 260
- -
6.0 6.9
about 1 month ago 3 months ago
C# C
- MIT License
The number of mentions indicates the total number of mentions that we've tracked plus the number of user suggested alternatives.
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.

AspNetCoreDiagnosticScenarios

Posts with mentions or reviews of AspNetCoreDiagnosticScenarios. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2023-12-09.
  • Give me your async/await gotchas
    3 projects | /r/dotnet | 9 Dec 2023
    This one is a pretty decent guide - https://github.com/davidfowl/AspNetCoreDiagnosticScenarios/blob/master/AsyncGuidance.md
  • What's the Benefit/Allure of Async/Await vs. CSP/Green Threads (and Other Concurrency Models)?
    6 projects | /r/rust | 9 Dec 2023
    The C# (mostly applicat community has e.g. https://github.com/davidfowl/AspNetCoreDiagnosticScenarios/blob/master/AsyncGuidance.md written by one of the Asp.Net architects. I found this in this lovely thread https://news.ycombinator.com/item?id=36785691 which expresses my views/confusion more clearly than I can express.
  • The State of Async Rust
    9 projects | news.ycombinator.com | 25 Sep 2023
    No it doesn't, hence why there are best practices guidelines written by the .NET architects, and there was a research project to add Go/Java co-routines as well.

    https://github.com/davidfowl/AspNetCoreDiagnosticScenarios/b...

    https://twitter.com/davidfowl/status/1532880744732758018?lan...

    https://github.com/dotnet/runtimelab/issues/2057

    https://github.com/dotnet/runtimelab/issues/2398

  • Java 21 makes me like Java again
    22 projects | news.ycombinator.com | 16 Sep 2023
  • The Downsides of C++ Coroutines
    1 project | news.ycombinator.com | 13 Aug 2023
    They don't work just fine in C#, there is a reason why one of ASP.NET architects has written a guide of best practices.

    https://github.com/davidfowl/AspNetCoreDiagnosticScenarios/b...

  • No-GIL mode coming for Python
    7 projects | news.ycombinator.com | 29 Jul 2023
    Many that praise async/await in C#, kind of forget it took about 10 years to spread across all the layer of the language and runtime, since it was done via IL rewriting, it caused several issues with F# async tasks, due to the age of the ecosystem plenty of code isn't async/await friendly and needs to be wrapped into Task.Run() or similar.

    There is a best practices guideline from one of the ASP.NET architects, https://github.com/davidfowl/AspNetCoreDiagnosticScenarios/b...

    During last year they researched adding Go/Java's approach to .NET, but now it is too late. See the ASP.NET Q&A session at BUILD 2023.

  • Task vs threads - use cases
    2 projects | /r/dotnet | 12 Jul 2023
    The best guidance I have found was from here: AsyncGuidance.md
  • How Much Memory Do You Need to Run 1M Concurrent Tasks?
    6 projects | news.ycombinator.com | 21 May 2023
    To expand upon this thought, here is the AsyncGuidance doc[1] on why not to use .Result to get the return value of a completed Task in C#.

    To make this simple they introduced async Main[2] a few years ago.

    [1]: https://github.com/davidfowl/AspNetCoreDiagnosticScenarios/b...

  • React developer to NET
    5 projects | /r/dotnet | 11 May 2023
    Async Guidance
  • Dotnet Async Guidance
    1 project | news.ycombinator.com | 8 May 2023

hamt

Posts with mentions or reviews of hamt. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2023-08-24.
  • Visual Introduction to Hash-Array Mapped Tries (HAMTs)
    2 projects | news.ycombinator.com | 24 Aug 2023
    This isn't a very good explanation. The wikipedia article isn't great either. I like this description:

    https://github.com/mkirchner/hamt#persistent-hash-array-mapp...

    The name does tell you quite a bit about what these are:

    * Hash - rather than directly using the keys to navigate the structure, the keys are hashed, and the hashes are used for navigation. This turns potentially long, poorly-distributed keys into short, well-distributed keys. However, that does mean you have to compute a hash on every access, and have to deal with hash collisions. The mkirchner implementation above calls collisions "hash exhaustion", and deals with them using some generational hashing scheme. I think i'd fall back to collision lists until that was conclusively proven to be too slow.

    * Trie - the tree is navigated by indexing nodes using chunks of the (hash of the) key, rather than comparing the keys in the node

    * Array mapped - sparse nodes are compressed, using a bitmap to indicate which logical slots are occupied, and then only storing those. The bitmaps live in the parent node, rather than the node itself, i think? Presumably helps with fetching.

    A HAMT contains a lot of small nodes. If every entry is a bitmap plus a pointer, then it's two words, and if we use five-bit chunks, then each node can be up to 32 entries, but i would imagine the majority are small, so a typical node might be 64 bytes. I worry that doing a malloc for each one would end up with a lot of overhead. Are HAMTs often implemented with some more custom memory management? Can you allocate a big block and then carve it up?

    Could you do a slightly relaxed HAMT where nodes are not always fully compact, but sized to the smallest suitable power of two entries? That might let you use some sort of buddy allocation scheme. It would also let you insert and delete without having to reallocate the node. Although i suppose you can already do that by mapping a few empty slots.

  • Show HN: A hash array-mapped trie implementation in C
    1 project | /r/patient_hackernews | 11 Jul 2023
    1 project | /r/hackernews | 11 Jul 2023
    1 project | /r/hypeurls | 10 Jul 2023
    2 projects | news.ycombinator.com | 10 Jul 2023
  • Ask HN: What are some 'cool' but obscure data structures you know about?
    54 projects | news.ycombinator.com | 21 Jul 2022

What are some alternatives?

When comparing AspNetCoreDiagnosticScenarios and hamt you can also consider the following projects:

PSI - Private Set Intersection Cardinality protocol based on ECDH and Bloom Filters

multiversion-concurrency-contro

t-digest - A new data structure for accurate on-line accumulation of rank-based statistics such as quantiles and trimmed means

RVS_Generic_Swift_Toolbox - A Collection Of Various Swift Tools, Like Extensions and Utilities

WPF - WPF is a .NET Core UI framework for building Windows desktop applications.

multiversion-concurrency-control - Implementation of multiversion concurrency control, Raft, Left Right concurrency Hashmaps and a multi consumer multi producer Ringbuffer, concurrent and parallel load-balanced loops, parallel actors implementation in Main.java, Actor2.java and a parallel interpreter

Hot Chocolate - Welcome to the home of the Hot Chocolate GraphQL server for .NET, the Strawberry Shake GraphQL client for .NET and Banana Cake Pop the awesome Monaco based GraphQL IDE.

CPython - The Python programming language

eShopOnWeb - Sample ASP.NET Core 8.0 reference application, powered by Microsoft, demonstrating a layered application architecture with monolithic deployment model. Download the eBook PDF from docs folder.

pyroscope - Continuous Profiling Platform. Debug performance issues down to a single line of code [Moved to: https://github.com/grafana/pyroscope]

MySqlConnector - MySQL Connector for .NET