diff --git a/README.md b/README.md index 93fbd1f..13ffe3d 100644 --- a/README.md +++ b/README.md @@ -9,15 +9,62 @@ [//]: # (![npm bundle size](https://img.shields.io/bundlephobia/min/data-structure-typed)) +## Why +

English | 简体中文

- -Data Structures of Javascript & TypeScript. - Do you envy C++ with [STL]() (std::), Python with [collections](), and Java with [java.util]() ? Well, no need to envy anymore! JavaScript and TypeScript now have [data-structure-typed]().**`Benchmark`** compared with C++ STL. **`API standards`** aligned with ES6 and Java. **`Usability`** is comparable to Python + +### We provide data structures that are not available in JavaScript/TypeScript + +Heap, Binary Tree, RedBlack Tree, Linked List, Deque, Trie, Directed Graph, Undirected Graph, BST, AVL Tree, Priority Queue, Queue, Tree Multiset, Linked List. + + +### Performance superior to native JavaScript/TypeScript + +**`Queue vs. native Array, 100,000 scale`** + + + + + + + + + + + + + + + + + +
Test MethodsTime Taken (ms)
Queue push & shift5.83
Array push & shift2829.59
+ +**`Deque vs. native Array, 100,000 scale`** + + + + + + + + + + + + + + + + + +
Test MethodsTime Taken (ms)
Deque unshift & shift2.44
Array unshift & shift4750.37
+ [//]: # (![Branches](https://img.shields.io/badge/branches-55.47%25-red.svg?style=flat)) [//]: # (![Statements](https://img.shields.io/badge/statements-67%25-red.svg?style=flat)) diff --git a/README_zh-CN.md b/README_zh-CN.md index b9a00c8..429384b 100644 --- a/README_zh-CN.md +++ b/README_zh-CN.md @@ -9,6 +9,8 @@ [//]: # (![npm bundle size](https://img.shields.io/bundlephobia/min/data-structure-typed)) +## 为什么 +

English | 简体中文

JavaScript和TypeScript的数据结构。 @@ -19,6 +21,54 @@ JavaScript和TypeScript的数据结构。 **`基准测试`** 与C++ STL相比。**`API 标准`** 与ES6和Java对齐。**`易用性`** 可与Python媲美。 + +### 提供了JavaScript/TypeScript中没有的数据结构 + +Heap, Binary Tree, RedBlack Tree, Linked List, Deque, Trie, Directed Graph, Undirected Graph, BST, AVL Tree, Priority Queue, Queue, Tree Multiset, Linked List. + + +### 性能超越原生JavaScript/TypeScript + +**`Queue和原生Array, 在100,000数据规模下性能对比`** + + + + + + + + + + + + + + + + + +
Test MethodsTime Taken (ms)
Queue push & shift5.83
Array push & shift2829.59
+ +**`Deque和原生Array在100,000数据规模下的性能对比`** + + + + + + + + + + + + + + + + + +
Test MethodsTime Taken (ms)
Deque unshift & shift2.44
Array unshift & shift4750.37
+ [//]: # (![Branches](https://img.shields.io/badge/branches-55.47%25-red.svg?style=flat)) [//]: # (![Statements](https://img.shields.io/badge/statements-67%25-red.svg?style=flat)) diff --git a/test/performance/data-structures/queue/deque.test.ts b/test/performance/data-structures/queue/deque.test.ts index d8677bd..ac701f3 100644 --- a/test/performance/data-structures/queue/deque.test.ts +++ b/test/performance/data-structures/queue/deque.test.ts @@ -5,7 +5,7 @@ import { magnitude } from '../../../utils'; import { isCompetitor } from '../../../config'; export const suite = new Benchmark.Suite(); -const { LINEAR } = magnitude; +const { LINEAR, HUNDRED_THOUSAND } = magnitude; suite.add(`${LINEAR.toLocaleString()} push`, () => { const deque = new Deque(); @@ -26,16 +26,28 @@ suite.add(`${LINEAR.toLocaleString()} push & pop`, () => { for (let i = 0; i < LINEAR; i++) _deque.push(i); for (let i = 0; i < LINEAR; i++) _deque.pop(); -}); -suite.add(`${LINEAR.toLocaleString()} push & shift`, () => { - const _deque = new Deque(); +}) + .add(`${HUNDRED_THOUSAND.toLocaleString()} push & shift`, () => { + const _deque = new Deque(); - for (let i = 0; i < LINEAR; i++) _deque.push(i); - for (let i = 0; i < LINEAR; i++) _deque.shift(); -}); -suite.add(`${LINEAR.toLocaleString()} unshift & shift`, () => { - const _deque = new Deque(); + for (let i = 0; i < HUNDRED_THOUSAND; i++) _deque.push(i); + for (let i = 0; i < HUNDRED_THOUSAND; i++) _deque.shift(); + }) + .add(`${HUNDRED_THOUSAND.toLocaleString()} Array push & shift`, () => { + const _deque = new Array(); - for (let i = 0; i < LINEAR; i++) _deque.unshift(i); - for (let i = 0; i < LINEAR; i++) _deque.shift(); -}); + for (let i = 0; i < HUNDRED_THOUSAND; i++) _deque.push(i); + for (let i = 0; i < HUNDRED_THOUSAND; i++) _deque.shift(); + }) + .add(`${HUNDRED_THOUSAND.toLocaleString()} unshift & shift`, () => { + const _deque = new Deque(); + + for (let i = 0; i < HUNDRED_THOUSAND; i++) _deque.unshift(i); + for (let i = 0; i < HUNDRED_THOUSAND; i++) _deque.shift(); + }) + .add(`${HUNDRED_THOUSAND.toLocaleString()} Array unshift & shift`, () => { + const _deque = new Array(); + + for (let i = 0; i < HUNDRED_THOUSAND; i++) _deque.unshift(i); + for (let i = 0; i < HUNDRED_THOUSAND; i++) _deque.shift(); + }); diff --git a/test/performance/data-structures/queue/queue.test.ts b/test/performance/data-structures/queue/queue.test.ts index 7812875..b6cf5ef 100644 --- a/test/performance/data-structures/queue/queue.test.ts +++ b/test/performance/data-structures/queue/queue.test.ts @@ -51,7 +51,7 @@ suite.add(`${HUNDRED_THOUSAND.toLocaleString()} Array push & shift`, () => { } for (let i = 0; i < HUNDRED_THOUSAND; i++) { - arr.shift(); + arr.pop(); } });