Для реализации выбрал AssemblyScript чтобы соответсвовать требованию к ДЗ.
В отличии от JS/TS у него есть С-подобные массивы.
git clone https://github.com/borolgs/otus-data-structures.git
npm i
npm test
npm run start:array
npm run start:queue
Type | Add (100000) | Get | Insert 0 | Insert x | Insert -1 | Remove 0 | Remove x | Remove -1 |
---|---|---|---|---|---|---|---|---|
Single | 89830ms | 0ms | 3ms | 3ms | 1ms | 2ms | 2ms | 2ms |
Vector | 834ms | 0ms | 3ms | 1ms | 0ms | 1ms | 1ms | 0ms |
Factor | 16ms | 0ms | 1ms | 2ms | 0ms | 1ms | 1ms | 0ms |
Default | 5942ms | 0ms | 0ms | 1ms | 0ms | 0ms | 0ms | 0ms |
По какой-то причине стандартный динамический массив в AssemblyScript работает медленее чем в JS и даже медленне чем мои собственные реализации VectorArray и FactorArray. Возможно дело в молодости языка и малом количестве энтузиастов-контрибьюторов.
Но если предтставить, что придется использовать этот язык в продакшне здесь и сейчас, то навых самостоятельной реализации динамического массива уже пригодился.