fsprojects / fsprojects/FSharpx.Collections

CHAMP - Compressed Hash-Array Mapped Prefix Tree

Open
#49 7 comments 1 reaction 0 assignees View on GitHub

Nobody has claimed this yet.

up-for-grabs
Dominant language
F#
Stars
253
Forks
76
Avg merge
49m
Merged PRs (30d)
1

Description

Possible addition to FSharpx.Collections?

Abstract
The data structures under-pinning collection API (e.g. lists, sets, maps) in the standard libraries of programming languages are used intensively in many applications.
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. This particularly prohibits their application in programs which process larger data sets.
In this paper, we propose changes to the HAMT design that increase the overall performance of immutable sets and maps. The resulting general purpose design increases cache locality and features a canonical representation. It outperforms Scala’s and Clojure’s data structure implementations in terms of memory footprint and runtime efficiency of iteration (1.3–6.7 x) and equality checking (3–25.4 x).

http://michael.steindorfer.name/publications/oopsla15.pdf

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reading the issue and the linked OOPSLA 2015 CHAMP paper to understand the proposed data structure and its intended collection API. The issue names no source files or tests, so first identify where FSharpx.Collections implements immutable sets and maps; done would require a defined integration scope and validation for the proposed addition.

Written by the indexing model from the issue text.

Assessment

Tech stack
fsharp
Domain
data
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.