97 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			97 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| "use strict";
 | |
| exports.__esModule = true;
 | |
| /* eslint-disable @typescript-eslint/no-var-requires */
 | |
| /* eslint-disable no-console */
 | |
| var Benchmark = require("benchmark");
 | |
| var mod_js_1 = require("./mod.js");
 | |
| var fast_levenshtein_1 = require("fast-levenshtein");
 | |
| var fs = require("fs");
 | |
| var jslevenshtein = require("js-levenshtein");
 | |
| var leven = require("leven");
 | |
| var levenshteinEditDistance = require("levenshtein-edit-distance");
 | |
| var suite = new Benchmark.Suite();
 | |
| var randomstring = function (length) {
 | |
|     var result = "";
 | |
|     var characters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
 | |
|     var charactersLength = characters.length;
 | |
|     for (var i = 0; i < length; i++) {
 | |
|         result += characters.charAt(Math.floor(Math.random() * charactersLength));
 | |
|     }
 | |
|     return result;
 | |
| };
 | |
| var randomstringArr = function (stringSize, arraySize) {
 | |
|     var i = 0;
 | |
|     var arr = [];
 | |
|     for (i = 0; i < arraySize; i++) {
 | |
|         arr.push(randomstring(stringSize));
 | |
|     }
 | |
|     return arr;
 | |
| };
 | |
| var arrSize = 1000;
 | |
| if (!fs.existsSync("data.json")) {
 | |
|     var data_1 = [
 | |
|         randomstringArr(4, arrSize),
 | |
|         randomstringArr(8, arrSize),
 | |
|         randomstringArr(16, arrSize),
 | |
|         randomstringArr(32, arrSize),
 | |
|         randomstringArr(64, arrSize),
 | |
|         randomstringArr(128, arrSize),
 | |
|         randomstringArr(256, arrSize),
 | |
|         randomstringArr(512, arrSize),
 | |
|         randomstringArr(1024, arrSize),
 | |
|     ];
 | |
|     fs.writeFileSync("data.json", JSON.stringify(data_1));
 | |
| }
 | |
| var data = JSON.parse(fs.readFileSync("data.json", "utf8"));
 | |
| var _loop_1 = function (i) {
 | |
|     var datapick = data[i];
 | |
|     if (process.argv[2] !== "no") {
 | |
|         suite
 | |
|             .add("".concat(i, " - js-levenshtein"), function () {
 | |
|             for (var j = 0; j < arrSize - 1; j += 2) {
 | |
|                 jslevenshtein(datapick[j], datapick[j + 1]);
 | |
|             }
 | |
|         })
 | |
|             .add("".concat(i, " - leven"), function () {
 | |
|             for (var j = 0; j < arrSize - 1; j += 2) {
 | |
|                 leven(datapick[j], datapick[j + 1]);
 | |
|             }
 | |
|         })
 | |
|             .add("".concat(i, " - fast-levenshtein"), function () {
 | |
|             for (var j = 0; j < arrSize - 1; j += 2) {
 | |
|                 (0, fast_levenshtein_1.get)(datapick[j], datapick[j + 1]);
 | |
|             }
 | |
|         })
 | |
|             .add("".concat(i, " - levenshtein-edit-distance"), function () {
 | |
|             for (var j = 0; j < arrSize - 1; j += 2) {
 | |
|                 levenshteinEditDistance(datapick[j], datapick[j + 1]);
 | |
|             }
 | |
|         });
 | |
|     }
 | |
|     suite.add("".concat(i, " - fastest-levenshtein"), function () {
 | |
|         for (var j = 0; j < arrSize - 1; j += 2) {
 | |
|             (0, mod_js_1.distance)(datapick[j], datapick[j + 1]);
 | |
|         }
 | |
|     });
 | |
| };
 | |
| // BENCHMARKS
 | |
| for (var i = 0; i < 9; i++) {
 | |
|     _loop_1(i);
 | |
| }
 | |
| var results = new Map();
 | |
| suite
 | |
|     .on("cycle", function (event) {
 | |
|     console.log(String(event.target));
 | |
|     if (results.has(event.target.name[0])) {
 | |
|         results.get(event.target.name[0]).push(event.target.hz);
 | |
|     }
 | |
|     else {
 | |
|         results.set(event.target.name[0], [event.target.hz]);
 | |
|     }
 | |
| })
 | |
|     .on("complete", function () {
 | |
|     console.log(results);
 | |
| })
 | |
|     // run async
 | |
|     .run({ async: true });
 |