All Projects → usethesource → Capsule

usethesource / Capsule

Licence: bsd-2-clause
The Capsule Hash Trie Collections Library

Programming Languages

java
68154 projects - #9 most used programming language

Projects that are alternatives of or similar to Capsule

Imtools
Fast and memory-efficient immutable collections and helper data structures
Stars: ✭ 85 (-75.71%)
Mutual labels:  immutable, performance
Data Structures
Go datastructures.
Stars: ✭ 336 (-4%)
Mutual labels:  immutable, trie
Extcore
An extended core library for F#.
Stars: ✭ 172 (-50.86%)
Mutual labels:  immutable, performance
Router
⚡️ A lightning fast HTTP router
Stars: ✭ 158 (-54.86%)
Mutual labels:  trie, performance
Floyd
The Floyd programming language
Stars: ✭ 133 (-62%)
Mutual labels:  immutable, performance
Immudb
immudb - world’s fastest immutable database, built on a zero trust model
Stars: ✭ 3,743 (+969.43%)
Mutual labels:  immutable, performance
shoki
Purely functional data structures in Java
Stars: ✭ 30 (-91.43%)
Mutual labels:  immutable, hashmap
Mlib
Library of generic and type safe containers in pure C language (C99 or C11) for a wide collection of container (comparable to the C++ STL).
Stars: ✭ 321 (-8.29%)
Mutual labels:  hashmap
Semimap
A semi compile-/run-time associative map container with compile-time lookup and run-time storage
Stars: ✭ 335 (-4.29%)
Mutual labels:  hashmap
React Antd
基于react + redux + immutable + less + ES6/7 + webpack2.0 + fetch + react-router + antd实现的SPA后台管理系统模板
Stars: ✭ 321 (-8.29%)
Mutual labels:  immutable
Sqlbench
sqlbench measures and compares the execution time of one or more SQL queries.
Stars: ✭ 319 (-8.86%)
Mutual labels:  performance
Tune
The Ultimate .NET Experiment
Stars: ✭ 324 (-7.43%)
Mutual labels:  performance
Velocypack
A fast and compact format for serialization and storage
Stars: ✭ 347 (-0.86%)
Mutual labels:  performance
Js Worker Search
JavaScript client-side search API with web-worker support
Stars: ✭ 345 (-1.43%)
Mutual labels:  performance
Arrayfire
ArrayFire: a general purpose GPU library.
Stars: ✭ 3,693 (+955.14%)
Mutual labels:  performance
React Shrine
"Shrine" Progressive Web App sample built with React
Stars: ✭ 322 (-8%)
Mutual labels:  performance
Tifig
A fast HEIF image converter aimed at thumbnailing
Stars: ✭ 345 (-1.43%)
Mutual labels:  performance
Webapp Checklist
Technical details that a programmer of a web application should consider before making the site public.
Stars: ✭ 320 (-8.57%)
Mutual labels:  performance
Akarin
Akarin is a powerful (not yet) server software from the 'new dimension'
Stars: ✭ 332 (-5.14%)
Mutual labels:  performance
Sparklens
Qubole Sparklens tool for performance tuning Apache Spark
Stars: ✭ 345 (-1.43%)
Mutual labels:  performance

The Capsule Hash Trie Collections Library

Capsule aims to become a full-fledged (immutable) collections library for Java 8+ that is solely built around persistent tries. The library is designed for standalone use and for being embedded in domain-specific languages. Capsule still has to undergo some incubation before it can ship as a well-rounded collection library. Nevertheless, the code is stable and performance is solid. Feel free to use it and let us know about your experiences!

More extensive tests and performance benchmarks will be added soon. The preliminary API for the immutable interfaces will be reworked as soon as possible as well.

Getting Started

Binary builds of capsule are deployed in the usethesource repository. In case you use Maven for dependency management, you have to add another repository location to your pom.xml file:

<repositories>
	<repository>
		<id>usethesource</id>
		<url>http://nexus.usethesource.io/content/repositories/public/</url>
	</repository>
</repositories>

Furthermore, you have to declare capsule as a dependency. To obtain the latest stable version for Java 8+, insert the following snippet in your pom.xml file:

<dependency>
	<groupId>io.usethesource</groupId>
	<artifactId>capsule</artifactId>
	<version>0.6.1</version>
</dependency>

To obtain the latest stable backport for Java 7 (that lags behind the Java 8+ release), insert the following snippet in your pom.xml file:

<dependency>
	<groupId>io.usethesource</groupId>
	<artifactId>capsule-jdk7</artifactId>
	<version>0.2.1</version>
</dependency>

Snippets for other build tools and dependency management systems may vary slightly.

Background: Efficient Immutable Data Structures on the JVM

The standard libraries of recent Java Virtual Machine languages, such as Clojure or Scala, contain scalable and well-performing immutable collection data structures that are implemented as Hash-Array Mapped Tries (HAMTs). HAMTs already feature efficient lookup, insert, and delete operations, however due to their tree-based nature their memory footprints and the runtime performance of iteration and equality checking lag behind array-based counterparts.

We introduce CHAMP (Compressed Hash-Array Mapped Prefix-tree), an evolutionary improvement over HAMTs. The new design increases the overall performance of immutable sets and maps. Furthermore, its resulting general purpose design increases cache locality and features a canonical representation.

References and Further Readings

Talks

Publications

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].