All Projects → mirage → ke

mirage / ke

Licence: MIT license
Fast implementation of queue in OCaml

Programming Languages

ocaml
1615 projects

Labels

Projects that are alternatives of or similar to ke

taskqueues.com
A list of distributed task queueing software.
Stars: ✭ 25 (-40.48%)
Mutual labels:  queue
zmq
ZeroMQ based distributed patterns
Stars: ✭ 27 (-35.71%)
Mutual labels:  queue
Algorithm-Data-Structures-Python
Various useful data structures in Python
Stars: ✭ 34 (-19.05%)
Mutual labels:  queue
Algorithms
Data Structures & Algorithms. Includes solutions for Cracking the Coding Interview 6th Edition
Stars: ✭ 89 (+111.9%)
Mutual labels:  queue
think-async
🌿 Exploring cooperative concurrency primitives in Python
Stars: ✭ 178 (+323.81%)
Mutual labels:  queue
PySiQ
A Python Simple Queue system for your apps
Stars: ✭ 23 (-45.24%)
Mutual labels:  queue
Competitive Programming
Contains solutions and codes to various online competitive programming challenges and some good problems. The links to the problem sets are specified at the beginning of each code.
Stars: ✭ 65 (+54.76%)
Mutual labels:  queue
pgq
Generic Queue for PostgreSQL
Stars: ✭ 134 (+219.05%)
Mutual labels:  queue
node-svmq
Native System V message queues in Node.js
Stars: ✭ 16 (-61.9%)
Mutual labels:  queue
express-bull-es6
An example setup with docker-compose, Redis, bull queue and ES6.
Stars: ✭ 67 (+59.52%)
Mutual labels:  queue
DEPRECATED-data-structures
A collection of powerful data structures
Stars: ✭ 2,648 (+6204.76%)
Mutual labels:  queue
rearq
A distributed task queue built with asyncio and redis, with built-in web interface
Stars: ✭ 81 (+92.86%)
Mutual labels:  queue
QueueBundle
QueueBundle for Symfony Framework
Stars: ✭ 40 (-4.76%)
Mutual labels:  queue
joobq
JoobQ is a fast, efficient asynchronous reliable job queue and job scheduler library processing. Jobs are submitted to a job queue, where they reside until they are able to be scheduled to run in a computing environment.
Stars: ✭ 26 (-38.1%)
Mutual labels:  queue
collections
📝 Collections library made in TypeScript
Stars: ✭ 14 (-66.67%)
Mutual labels:  queue
spinach
Modern Redis task queue for Python 3
Stars: ✭ 46 (+9.52%)
Mutual labels:  queue
Fortress-of-Solitude
This Library has resources to solve common data structure algorithm problems like a Doubly linked list, Generic trees, Queue, Stack, and other algorithms. Each lib has an option to carry your custom data in elements. Custom data in detail, other fantastic resources.
Stars: ✭ 53 (+26.19%)
Mutual labels:  queue
emitter-queue
😴 Queue emitter events
Stars: ✭ 16 (-61.9%)
Mutual labels:  queue
Data-Structures
Algorithmic Problems Solutions -- hash table code featured in geeksforgeeks
Stars: ✭ 44 (+4.76%)
Mutual labels:  queue
arcus.messaging
Messaging with Microsoft Azure in a breeze.
Stars: ✭ 20 (-52.38%)
Mutual labels:  queue

Ke - Fast implementation of Queue in OCaml

travis-ci

Queue or FIFO is one of the most famous data-structure used in several algorithms. Ke provides some implementations of it in a functionnal or imperative way.

It is a little library with benchmark (bechamel or core_bench), fuzzer and tests.

From what we know, Ke.Rke is the faster implementation than Queue from the standard library or the base package. It is limited by some kind of data (see Bigarray.kind) but enough for a large amount of algorithms. The fast operation is to put some elements faster than a sequence of Queue.push, and get some elements faster than a sequence of Queue.pop.

Then we provide a functionnal interface Fke or an imperative interface Rke.

We extended implementations to have a limit of elements to store (see Rke.Weighted and Fke.Weigted). The purpose of it is to limit memory consumption of queue when we use it in some contexts (like encoder).

Again, as a part of the MirageOS project, Ke does not rely on C stubs, Obj.magic and so on.

Author: Romain Calascibetta [email protected]

Documentation: https://mirage.github.io/ke/

Notes about Implementations

The functionnal implementation Fke is come from the Okazaki's queue implementation with GADT to discard impossible case.

Rke, Rke.Weighted and Fke.Weighted was limited by kind and follow Xen's implementation of the shared memory ring-buffer. Length of the internal buffer is, in any case, a power of two - that means, in some context, for a large amount of elements, this kind of queue does not fit on your request.

Fuzzer was made to compare the standard Queue (as an oracle) with Rke and Fke. We construct a set of actions (push and pop) and ensure (by GADT) to never pop an empty queue.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].