58 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			58 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
# 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
 |