diff options
author | Sergei Trofimovich <slyfox@gentoo.org> | 2016-01-19 21:56:02 +0000 |
---|---|---|
committer | Sergei Trofimovich <slyfox@gentoo.org> | 2016-01-19 22:29:01 +0000 |
commit | adf753775394254435ccc6f6e0d029bb515aa093 (patch) | |
tree | 6d39e6c0fc85ab8c389f0b84c6500fbd1c45478b /dev-haskell/psqueues/metadata.xml | |
parent | dev-haskell/hex: new package, a depend of dev-haskell/http2 (diff) | |
download | gentoo-adf753775394254435ccc6f6e0d029bb515aa093.tar.gz gentoo-adf753775394254435ccc6f6e0d029bb515aa093.tar.bz2 gentoo-adf753775394254435ccc6f6e0d029bb515aa093.zip |
dev-haskell/psqueues: new package, a depend of dev-haskell/http2
Pure priority search queues.
Package-Manager: portage-2.2.27
Diffstat (limited to 'dev-haskell/psqueues/metadata.xml')
-rw-r--r-- | dev-haskell/psqueues/metadata.xml | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/dev-haskell/psqueues/metadata.xml b/dev-haskell/psqueues/metadata.xml new file mode 100644 index 000000000000..d4c0b904bde1 --- /dev/null +++ b/dev-haskell/psqueues/metadata.xml @@ -0,0 +1,48 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd"> +<pkgmetadata> + <herd>haskell</herd> + <longdescription> + The psqueues package provides + <http://en.wikipedia.org/wiki/Priority_queue Priority Search Queues> in + three different flavors. + + * @OrdPSQ k p v@, which uses the @Ord k@ instance to provide fast insertion, + deletion and lookup. This implementation is based on Ralf Hinze's + <http://citeseer.ist.psu.edu/hinze01simple.html A Simple Implementation Technique for Priority Search Queues>. + Hence, it is similar to the + <http://hackage.haskell.org/package/PSQueue PSQueue> library, although it is + considerably faster and provides a slightly different API. + + * @IntPSQ p v@ is a far more efficient implementation. It fixes the key type + to @Int@ and uses a <http://en.wikipedia.org/wiki/Radix_tree radix tree> + (like @IntMap@) with an additional min-heap property. + + * @HashPSQ k p v@ is a fairly straightforward extension of @IntPSQ@: it + simply uses the keys' hashes as indices in the @IntPSQ@. If there are any + hash collisions, it uses an @OrdPSQ@ to resolve those. The performance of + this implementation is comparable to that of @IntPSQ@, but it is more widely + applicable since the keys are not restricted to @Int@, but rather to any + @Hashable@ datatype. + + Each of the three implementations provides the same API, so they can be used + interchangeably. The benchmarks show how they perform relative to one + another, and also compared to the other Priority Search Queue + implementations on Hackage: + <http://hackage.haskell.org/package/PSQueue PSQueue> + and + <http://hackage.haskell.org/package/fingertree-psqueue fingertree-psqueue>. + + <<http://i.imgur.com/KmbDKR6.png>> + + <<http://i.imgur.com/ClT181D.png>> + + Typical applications of Priority Search Queues include: + + * Caches, and more specifically LRU Caches; + + * Schedulers; + + * Pathfinding algorithms, such as Dijkstra's and A*. + </longdescription> +</pkgmetadata> |