.NET port of LMAX Disruptor
CircularBuffer-CSharp
.NET port of LMAX Disruptor | CircularBuffer-CSharp | |
---|---|---|
2 | 4 | |
1,165 | 219 | |
0.7% | - | |
7.2 | 5.9 | |
2 months ago | 3 months ago | |
C# | C# | |
GNU General Public License v3.0 or later | The Unlicense |
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.
.NET port of LMAX Disruptor
-
Is there a library with a fixed-sized collection, where newly added data is inserted at the start, but if the collection's capacity has reached the size, older data is discarded (but it doesn't move any of the elements around), and that you can also index to?
You could consider looking at https://github.com/disruptor-net/Disruptor-net.
-
Awesome .NET Performance
I would look at adding LMAX Disruptor to this list. It can run circles around stuff scattered across TPL usages. Doesnt fit every use case, but its really incredible when it does fit. I was able to build a toy project that handles millions of user events per second on a single thread using this.
Getting your application aligned with the NUMA model makes way more difference in performance than anything else.
https://github.com/disruptor-net/Disruptor-net
CircularBuffer-CSharp
-
Best way to create a collection of data of fixed size with add or push functionality
There's also this implementation on GitHub which looks like it should meet your requirements.
-
What would be the best "Stack" data structure for large element counts and frequent access?
Really loved this idea. Never heard of the structure until now. Ultimately going with this implementation. Thanks for the help! https://github.com/joaoportela/CircularBuffer-CSharp
-
Stack/Queue where you can remove items from both ends?
Want to add. Your description also sounds like Circular Buffer. C# does not have a circular buffer implementation but you can use this https://github.com/joaoportela/CircularBuffer-CSharp
-
Is there a library with a fixed-sized collection, where newly added data is inserted at the start, but if the collection's capacity has reached the size, older data is discarded (but it doesn't move any of the elements around), and that you can also index to?
Ah thanks. I found one here, which looks quite nifty
What are some alternatives?
Akka.net - Canonical actor model implementation for .NET with local + distributed actors in C# and F#.
Deque - A C# Deque class
Zebus - A lightweight Peer to Peer Service Bus
.NET Runtime - .NET is a cross-platform runtime for cloud, mobile, desktop, and IoT apps.
protoactor-dotnet - Proto Actor - Ultra fast distributed actors for Go, C# and Java/Kotlin
ArduinoMIDIController - A thingy that lets you connect potentiometers to an arduino, which spools data to a C# program which parses it into MIDI parameter values which can be sent to a DAW
Orleankka - Functional API for Microsoft Orleans http://orleanscontrib.github.io/Orleankka
Time-System - Time management system that gives the ability to rewind time
FsShelter - Author Apache Storm topologies with F# using statically-typed streams
store-modular-monolith - 🛒 Implementing an “online store” modular monolith application with domain-driven design and CQRS with using in-memory message broker based on .Net Core.
.NEXT Raft
IdGen - Twitter Snowflake-alike ID generator for .Net