Comments (5)
Then you'd need to access FastPriorityQueue
through PriorityQueueNode
: PriorityQueueNode.FastPriorityQueue
. Yuck.
_numNodesEverEnqueued
is to keep the queue stable, which is necessary in some pathfinding algorithms.
from high-speed-priority-queue-for-c-sharp.
That's what usings are for =) Though I agree, not great, but neither is having public variables that if touched by an outsider, will break the priorityqueue. (Though I could see that being the doctor my elbow hurts problem -- ie, don't do that and everything's fine)
Interesting tidbit about the _numNodesEver thing, which algorithms use it? For my purposes I'm tossing it, downgrading insertionindex to an uint, and priority to a float -- which reminds me do you have a set of performance tests? I'm curious how much I gain (if any) by making the QueueNode smaller, for greater cache coherence. I'm also curious whether there is any speed difference moving to structs.
from high-speed-priority-queue-for-c-sharp.
A stable priority queue is necessary for any algorithm that requires movement to behave in a consistent manner. The example that comes immediately to mind is pathery.com, where ex. if moving both 'up' and 'right' give the same distance, up is always taken.
Though, I suppose I could add a compiler flag (or just create a new PriorityQueue
class, StablePriorityQueue
, and make the main one non-stable)
from high-speed-priority-queue-for-c-sharp.
(whoops, forgot to answer your other question) - Yes I have a lot of performance tests, but they are a part of the private project this priority queue originally stemmed from.
They are tests of actual pathfinding algorithms (BFS, A*, and LPA*) against various real-world small- and medium-sized mazes.
from high-speed-priority-queue-for-c-sharp.
I'm going to close this as I'm not going to implement the main suggestion; but I've created #7 for the other suggestion.
from high-speed-priority-queue-for-c-sharp.
Related Issues (20)
- Typo HOT 1
- Reused nodes QueueIndex breaks debug HOT 2
- Upgrade PCL project to .NET Standard Class Library HOT 1
- DLL Can't be found HOT 2
- NUnit tests do not run in debug in Visual Studio 2019 HOT 1
- Documentation contradicts examples HOT 2
- Assembly name has a space in it. HOT 2
- FastQueue doesn't return some nodes in some cases HOT 3
- Add constructor accepting FastPriorityQueue's backing array to minimize allocation HOT 1
- Thread safety HOT 1
- is it necessary to have restriction for IComparable? HOT 2
- Add strong name to this NuGet HOT 2
- Proposal: SimplePriorityQueue overloads that expose priority when trivial, for performance and thread safety HOT 1
- StablePriorityQueue is not stable. HOT 1
- Proposal: Add Targets for Other .NET Runtimes Explicitly HOT 2
- Look into C# 10 INumber interface
- Dequeue Performance HOT 3
- Dequeue of FastPriorityQueue returned in wrong order HOT 2
- Add OrderedEnumerator function
- Bug: Last item in queue is not in correct order HOT 4
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from high-speed-priority-queue-for-c-sharp.