| # fastest-levenshtein :rocket: |
| > Fastest JS/TS implemenation of [Levenshtein distance](https://en.wikipedia.org/wiki/Levenshtein_distance).<br> |
| > Measure the difference between two strings. |
| |
| [](https://travis-ci.org/ka-weihe/fastest-levenshtein) |
| [](https://coveralls.io/github/ka-weihe/node-levenshtein?branch=master) |
| [](https://lgtm.com/projects/g/ka-weihe/fastest-levenshtein/context:javascript) |
|  |
| ```bash |
| $ npm i fastest-levenshtein |
| ``` |
| |
| ## Usage |
| ### Node |
| ```javascript |
| const {distance, closest} = require('fastest-levenshtein') |
| |
| // Print levenshtein-distance between 'fast' and 'faster' |
| console.log(distance('fast', 'faster')) |
| //=> 2 |
| |
| // Print string from array with lowest edit-distance to 'fast' |
| console.log(closest('fast', ['slow', 'faster', 'fastest'])) |
| //=> 'faster' |
| ``` |
| |
| ### Deno |
| ```javascript |
| import {distance, closest} from 'https://deno.land/x/fastest_levenshtein/mod.ts' |
| |
| // Print levenshtein-distance between 'fast' and 'faster' |
| console.log(distance('fast', 'faster')) |
| //=> 2 |
| |
| // Print string from array with lowest edit-distance to 'fast' |
| console.log(closest('fast', ['slow', 'faster', 'fastest'])) |
| //=> 'faster' |
| ``` |
| |
| ## Benchmark |
| I generated 500 pairs of strings with length N. I measured the ops/sec each library achieves to process all the given pairs. Higher is better. |
| |
| | Test Target | N=4 | N=8 | N=16 | N=32 | N=64 | N=128 | N=256 | N=512 | N=1024 | |
| |---------------------------|-------|-------|-------|------|-------|-------|-------|-------|--------| |
| | fastest-levenshtein | 44423 | 23702 | 10764 | 4595 | 1049 | 291.5 | 86.64 | 22.24 | 5.473 | |
| | js-levenshtein | 21261 | 10030 | 2939 | 824 | 223 | 57.62 | 14.77 | 3.717 | 0.934 | |
| | leven | 19688 | 6884 | 1606 | 436 | 117 | 30.34 | 7.604 | 1.929 | 0.478 | |
| | fast-levenshtein | 18577 | 6112 | 1265 | 345 | 89.41 | 22.70 | 5.676 | 1.428 | 0.348 | |
| | levenshtein-edit-distance | 22968 | 7445 | 1493 | 409 | 109 | 28.07 | 7.095 | 1.789 | 0.445 | |
| |
| ### Relative Performance |
| This image shows the relative performance between `fastest-levenshtein` and `js-levenshtein` (the 2nd fastest). `fastest-levenshtein` is always a lot faster. y-axis shows "times faster". |
| |
|  |
| |
| ## License |
| This project is licensed under the MIT License - see the [LICENSE.md](LICENSE.md) file for details |