• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1"use strict";
2exports.__esModule = true;
3/* eslint-disable @typescript-eslint/no-var-requires */
4/* eslint-disable no-console */
5var Benchmark = require("benchmark");
6var mod_js_1 = require("./mod.js");
7var fast_levenshtein_1 = require("fast-levenshtein");
8var fs = require("fs");
9var jslevenshtein = require("js-levenshtein");
10var leven = require("leven");
11var levenshteinEditDistance = require("levenshtein-edit-distance");
12var suite = new Benchmark.Suite();
13var randomstring = function (length) {
14    var result = "";
15    var characters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
16    var charactersLength = characters.length;
17    for (var i = 0; i < length; i++) {
18        result += characters.charAt(Math.floor(Math.random() * charactersLength));
19    }
20    return result;
21};
22var randomstringArr = function (stringSize, arraySize) {
23    var i = 0;
24    var arr = [];
25    for (i = 0; i < arraySize; i++) {
26        arr.push(randomstring(stringSize));
27    }
28    return arr;
29};
30var arrSize = 1000;
31if (!fs.existsSync("data.json")) {
32    var data_1 = [
33        randomstringArr(4, arrSize),
34        randomstringArr(8, arrSize),
35        randomstringArr(16, arrSize),
36        randomstringArr(32, arrSize),
37        randomstringArr(64, arrSize),
38        randomstringArr(128, arrSize),
39        randomstringArr(256, arrSize),
40        randomstringArr(512, arrSize),
41        randomstringArr(1024, arrSize),
42    ];
43    fs.writeFileSync("data.json", JSON.stringify(data_1));
44}
45var data = JSON.parse(fs.readFileSync("data.json", "utf8"));
46var _loop_1 = function (i) {
47    var datapick = data[i];
48    if (process.argv[2] !== "no") {
49        suite
50            .add("".concat(i, " - js-levenshtein"), function () {
51            for (var j = 0; j < arrSize - 1; j += 2) {
52                jslevenshtein(datapick[j], datapick[j + 1]);
53            }
54        })
55            .add("".concat(i, " - leven"), function () {
56            for (var j = 0; j < arrSize - 1; j += 2) {
57                leven(datapick[j], datapick[j + 1]);
58            }
59        })
60            .add("".concat(i, " - fast-levenshtein"), function () {
61            for (var j = 0; j < arrSize - 1; j += 2) {
62                (0, fast_levenshtein_1.get)(datapick[j], datapick[j + 1]);
63            }
64        })
65            .add("".concat(i, " - levenshtein-edit-distance"), function () {
66            for (var j = 0; j < arrSize - 1; j += 2) {
67                levenshteinEditDistance(datapick[j], datapick[j + 1]);
68            }
69        });
70    }
71    suite.add("".concat(i, " - fastest-levenshtein"), function () {
72        for (var j = 0; j < arrSize - 1; j += 2) {
73            (0, mod_js_1.distance)(datapick[j], datapick[j + 1]);
74        }
75    });
76};
77// BENCHMARKS
78for (var i = 0; i < 9; i++) {
79    _loop_1(i);
80}
81var results = new Map();
82suite
83    .on("cycle", function (event) {
84    console.log(String(event.target));
85    if (results.has(event.target.name[0])) {
86        results.get(event.target.name[0]).push(event.target.hz);
87    }
88    else {
89        results.set(event.target.name[0], [event.target.hz]);
90    }
91})
92    .on("complete", function () {
93    console.log(results);
94})
95    // run async
96    .run({ async: true });
97