react / wstein / node_modules / browserify / node_modules / module-deps / node_modules / detective / node_modules / escodegen / node_modules / optionator / node_modules / fast-levenshtein / benchmark / speed.js
80722 viewsvar fastLevenshtein = require('../levenshtein.min').get,1levenshtein = require('levenshtein'),2levenshteinEditDistance = require('levenshtein-edit-distance'),3levenshteinComponent = require('levenshtein-component'),4levenshteinDeltas = require('levenshtein-deltas'),5natural = require('natural').LevenshteinDistance;6789/* The first 100 words from Letterpress: https://github.com/atebits/Words */10source = Array(11).join([11'aa',12'aah',13'aahed',14'aahing',15'aahs',16'aal',17'aalii',18'aaliis',19'aals',20'aardvark',21'aardvarks',22'aardwolf',23'aardwolves',24'aargh',25'aarrgh',26'aarrghh',27'aarti',28'aartis',29'aas',30'aasvogel',31'aasvogels',32'ab',33'aba',34'abac',35'abaca',36'abacas',37'abaci',38'aback',39'abacs',40'abacterial',41'abactinal',42'abactinally',43'abactor',44'abactors',45'abacus',46'abacuses',47'abaft',48'abaka',49'abakas',50'abalone',51'abalones',52'abamp',53'abampere',54'abamperes',55'abamps',56'aband',57'abanded',58'abanding',59'abandon',60'abandoned',61'abandonedly',62'abandonee',63'abandonees',64'abandoner',65'abandoners',66'abandoning',67'abandonment',68'abandonments',69'abandons',70'abandonware',71'abandonwares',72'abands',73'abapical',74'abas',75'abase',76'abased',77'abasedly',78'abasement',79'abasements',80'abaser',81'abasers',82'abases',83'abash',84'abashed',85'abashedly',86'abashes',87'abashing',88'abashless',89'abashment',90'abashments',91'abasia',92'abasias',93'abasing',94'abask',95'abatable',96'abate',97'abated',98'abatement',99'abatements',100'abater',101'abaters',102'abates',103'abating',104'abatis',105'abatises',106'abator',107'abators',108'abattis',109'abattises',110'abattoir',111'abattoirs'112].join('|')).split('|');113114115116/**117* The actual test loop.118* @param {Function} fn Levenshtein distance function.119*/120var loop = function(fn) {121var iterator = -1,122previousValue = '',123value,124dist;125126while (value = source[++iterator]) {127dist = fn(previousValue, value);128previousValue = value;129}130};131132133/** @type {Object} Test config */134module.exports = {135name: 'Implementation comparison',136onComplete: function() {137console.log('Benchmark done.');138},139tests: [140{141name: 'levenshtein-edit-distance',142fn: function() {143loop(levenshteinEditDistance);144}145},146{147name: 'levenshtein-component',148fn: function() {149loop(levenshteinComponent);150}151},152{153name: 'levenshtein-deltas',154fn: function() {155loop(function(v1,v2) {156return new levenshteinDeltas.Lev(v1,v2).distance();157});158}159},160{161name: 'natural',162fn: function() {163loop(natural);164}165},166{167name: 'levenshtein',168fn: function() {169loop(levenshtein);170}171},172{173name: 'fast-levenshtein',174fn: function() {175loop(fastLevenshtein);176}177},178]179};180181182183184