Skip to content
/ js-sdsl Public
forked from js-sdsl/js-sdsl

A javascript standard data structure library which benchmark against C STL.

License

Notifications You must be signed in to change notification settings

Anmaiy/js-sdsl

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

js-sdsl logo

A javascript standard data structure library which benchmark against C STL

NPM Version Build Status Coverage Status GITHUB Star NPM Downloads Gzip Size Rate this package MIT-license GITHUB-language

English | 简体中文

Included data structures

  • Vector
  • Stack
  • Queue
  • LinkList
  • Deque
  • PriorityQueue
  • OrderedSet (using RBTree)
  • OrderedMap (using RBTree)
  • HashSet
  • HashMap

Benchmark

We are benchmarking against other popular data structure libraries. In some ways we're better than the best library. See benchmark.

Supported platforms

  • node.js (using commonjs)
  • react/vue (using es5)
  • browser (support most browsers)

Download

Download directly

Or install js-sdsl using npm

npm install js-sdsl

Usage

You can visit our official website to get more information.

To help you have a better use, we also provide this API document.

For browser

<!-- you can download the file locally and import it or import it dynamically by using url. -->
<script src="https://unpkg.com/js-sdsl/dist/umd/js-sdsl.min.js"></script>
<script>
    const {
      Vector,
      Stack,
      Queue,
      LinkList,
      Deque,
      PriorityQueue,
      OrderedSet,
      OrderedMap,
      HashSet,
      HashMap
    } = sdsl;
    const myOrderedMap = new OrderedMap();
    myOrderedMap.setElement(1, 2);
    console.log(myOrderedMap.getElementByKey(1)); // 2
</script>

For npm

// esModule
import { OrderedMap } from 'js-sdsl';
// commonJs
const { OrderedMap } = require('js-sdsl');
const myOrderedMap = new OrderedMap();
myOrderedMap.setElement(1, 2);
console.log(myOrderedMap.getElementByKey(1)); // 2

Build by source code

You can pull this repository and run yarn build to rebuild this library.

Test

Unit test

We use jest library to write unit tests, you can see test coverage on coveralls. You can run yarn test:unit command to reproduce it.

For performance

We tested most of the functions for efficiency. You can go to testResult.txt to see our running results or reproduce it with yarn test:performance command.

The following is a partial interception of the performance test:

=================================== OrderedSet ===================================
┌─────────┬─────────────────────┬─────────┬───────────────┬─────────┐
│ (index) │      testFunc       │ testNum │ containerSize │ runTime │
├─────────┼─────────────────────┼─────────┼───────────────┼─────────┤
│    0    │    'constructor'    │    1    │    1000000    │  1667   │
│    1    │      'insert'       │ 1000000 │    2000000    │   558   │
│    2    │ 'eraseElementByKey' │ 1000000 │    3000000    │   362   │
│    3    │ 'eraseElementByPos' │   10    │    3000000    │   633   │
│    4    │       'union'       │    1    │    2999998    │  1949   │
│    5    │    'lowerBound'     │ 1000000 │    2999998    │  1665   │
│    6    │    'upperBound'     │ 1000000 │    2999998    │  1722   │
│    7    │ 'reverseLowerBound' │ 1000000 │    2999998    │  1690   │
│    8    │ 'reverseUpperBound' │ 1000000 │    2999998    │  1713   │
└─────────┴─────────────────────┴─────────┴───────────────┴─────────┘
=================================== OrderedMap ===================================
┌─────────┬─────────────────────┬─────────┬───────────────┬─────────┐
│ (index) │      testFunc       │ testNum │ containerSize │ runTime │
├─────────┼─────────────────────┼─────────┼───────────────┼─────────┤
│    0    │    'constructor'    │    1    │    1000000    │  1574   │
│    1    │    'setElement'     │ 1000000 │    2000000    │   643   │
│    2    │ 'eraseElementByKey' │ 1000000 │    2000000    │   344   │
│    3    │ 'eraseElementByPos' │   100   │    1000000    │  6082   │
│    4    │       'union'       │    1    │    1999900    │  1888   │
│    5    │    'lowerBound'     │ 1000000 │    1999900    │  1615   │
│    6    │    'upperBound'     │ 1000000 │    1999900    │  1666   │
│    7    │ 'reverseLowerBound' │ 1000000 │    1999900    │  1619   │
│    8    │ 'reverseUpperBound' │ 1000000 │    1999900    │  1665   │
└─────────┴─────────────────────┴─────────┴───────────────┴─────────┘

Maintainers

@ZLY201

Contributing

Feel free to dive in! Open an issue or submit PRs. It may be helpful to read the Contributor Guide.

Contributors

Thanks goes to these wonderful people:


Takatoshi Kondo

💻 ⚠️

This project follows the all-contributors specification. Contributions of any kind welcome!

License

MIT © ZLY201

About

A javascript standard data structure library which benchmark against C STL.

Resources

License

Code of conduct

Stars

Watchers

Forks

Packages

No packages published

Languages

  • TypeScript 99.9%
  • Shell 0.1%