From e4e9b31c61e84570534872e4eac15413c96dacbd Mon Sep 17 00:00:00 2001 From: Thomas Wilkerling Date: Mon, 8 Jan 2024 03:13:28 +0100 Subject: [PATCH] -- MOVED FROM MASTER -- --- bench.js | 327 +++++++++++++++++++++ index.html | 113 ++++++++ index.js | 348 +++++++++++++++++++++++ match.html | 39 +++ match.js | 150 ++++++++++ test/bm25/index.html | 54 ++++ test/bulksearch-match/index.html | 51 ++++ test/bulksearch/index.html | 54 ++++ test/elasticlunr/index.html | 50 ++++ test/flexsearch-0.6.2/index.html | 59 ++++ test/flexsearch-0.6.3/index.html | 59 ++++ test/flexsearch-0.7.0-context/index.html | 51 ++++ test/flexsearch-0.7.0-match/index.html | 57 ++++ test/flexsearch-0.7.0/index.html | 68 +++++ test/flexsearch-balance/index.html | 39 +++ test/flexsearch-default/index.html | 39 +++ test/flexsearch-doc/index.html | 52 ++++ test/flexsearch-fast/index.html | 39 +++ test/flexsearch-match/index.html | 39 +++ test/flexsearch-memory/index.html | 38 +++ test/flexsearch-score/index.html | 38 +++ test/flexsearch-speed/index.html | 38 +++ test/fuse-match/index.html | 52 ++++ test/fuse/index.html | 49 ++++ test/fuzzysearch/index.html | 33 +++ test/js-search/index.html | 44 +++ test/jsii/index.html | 48 ++++ test/lunr/index.html | 49 ++++ test/lyra/index.html | 52 ++++ test/minisearch-match/index.html | 42 +++ test/minisearch/index.html | 42 +++ test/wade/index.html | 37 +++ tpl/lib.html | 3 + tpl/lib.js | 17 ++ tpl/row.html | 12 + tpl/row.js | 104 +++++++ 36 files changed, 2386 insertions(+) create mode 100644 bench.js create mode 100644 index.html create mode 100644 index.js create mode 100644 match.html create mode 100644 match.js create mode 100644 test/bm25/index.html create mode 100644 test/bulksearch-match/index.html create mode 100644 test/bulksearch/index.html create mode 100644 test/elasticlunr/index.html create mode 100644 test/flexsearch-0.6.2/index.html create mode 100644 test/flexsearch-0.6.3/index.html create mode 100644 test/flexsearch-0.7.0-context/index.html create mode 100644 test/flexsearch-0.7.0-match/index.html create mode 100644 test/flexsearch-0.7.0/index.html create mode 100644 test/flexsearch-balance/index.html create mode 100644 test/flexsearch-default/index.html create mode 100644 test/flexsearch-doc/index.html create mode 100644 test/flexsearch-fast/index.html create mode 100644 test/flexsearch-match/index.html create mode 100644 test/flexsearch-memory/index.html create mode 100644 test/flexsearch-score/index.html create mode 100644 test/flexsearch-speed/index.html create mode 100644 test/fuse-match/index.html create mode 100644 test/fuse/index.html create mode 100644 test/fuzzysearch/index.html create mode 100644 test/js-search/index.html create mode 100644 test/jsii/index.html create mode 100644 test/lunr/index.html create mode 100644 test/lyra/index.html create mode 100644 test/minisearch-match/index.html create mode 100644 test/minisearch/index.html create mode 100644 test/wade/index.html create mode 100644 tpl/lib.html create mode 100644 tpl/lib.js create mode 100644 tpl/row.html create mode 100644 tpl/row.js diff --git a/bench.js b/bench.js new file mode 100644 index 0000000..817257a --- /dev/null +++ b/bench.js @@ -0,0 +1,327 @@ +import { text_data } from "../demo/data/gulliver.js"; + +export let suite = {}; +export const test = {}; +const result = document.getElementById("result").appendChild(document.createTextNode("running...")); +const match = window.location.hash.indexOf("match") !== -1; +export const queue = []; +let lib; + +const params = (function(){ + + const obj = {}; + const pairs = window.location.search.substring(1).split('&'); + + for(let i = 0, split; i < pairs.length; i++){ + split = pairs[i].split('='); + obj[split[0]] = split[1]; + } + + return obj; +}()); + +let runs; +let duration; + +if(params["duration"] && (params["duration"].indexOf("run-") !== -1)){ + + duration = 86400000; + runs = parseInt(params["duration"].replace("run-", ""), 10); +} +else{ + + duration = parseFloat(params["duration"] || "5") * 1000; +} + +// if(match){ +// +// text_data.push('zero one two three four five six seven eight nine ten'); +// text_data.push('four two zero one three ten five seven eight six nine'); +// text_data.push('zero one two three four five six seven eight nine ten'); +// } + +// queue.push({ +// name: "add", +// init: null, +// test: null, +// start: null, +// prepare: null, +// fn: function(){ +// lib.init(); +// lib.add(text_data); +// }, +// end: null, +// complete: null, +// count: text_data.length +// }); +// +// queue.push({ +// name: "update", +// init: null, +// test: null, +// start: function(){ +// lib.init(); +// lib.add(text_data); +// }, +// prepare: null, +// fn: function(){ +// lib.add(text_data); +// }, +// end: null, +// complete: null, +// count: text_data.length +// }); +// +// let index; +// +// queue.push({ +// name: "remove", +// init: null, +// test: null, +// start: function(){ +// lib.init(); +// lib.add(text_data); +// index = 0; +// }, +// prepare: null, +// fn: function(){ +// lib.remove(index++); +// }, +// end: null, +// complete: null, +// cycle: text_data.length, +// count: 1 +// }); + +queue.push({ + name: "query-single", + init: null, + test: null, + start: null, + prepare: null, + fn: function(){ + lib.query("gulliver"); + lib.query("great"); + lib.query("country"); + lib.query("time"); + lib.query("people"); + lib.query("little"); + lib.query("master"); + lib.query("took"); + lib.query("feet"); + lib.query("houyhnhnms"); + }, + end: null, + complete: null, + count: 10 +}); + +queue.push({ + name: "query-multi", + init: null, + test: null, + start: null, + prepare: null, + fn: function(){ + lib.query("italians homunceletino"); + lib.query("theodorus vangrult"); + lib.query("virtuous houyhnhnms"); + lib.query("creature discovered"); + lib.query("lord high chancellor"); + }, + end: null, + complete: null, + count: 5 +}); + +queue.push({ + name: "query-long", + init: null, + test: null, + start: null, + prepare: null, + fn: function(){ + lib.query("there were six spanish pieces of four pistoles"); + lib.query("glumdalclitch and i attended the king and queen in a progress"); + lib.query("only in this island of luggnagg the appetite for living was not so eager"); + }, + end: null, + complete: null, + count: 3 +}); + +queue.push({ + name: "query-dupes", + init: null, + test: null, + start: null, + prepare: null, + fn: function(){ + lib.query("gulliver gulliver gulliver"); + lib.query("italians homunceletino italians homunceletino"); + }, + end: null, + complete: null, + count: 2 +}); + +queue.push({ + name: "not-found", + init: null, + test: null, + start: null, + prepare: null, + fn: function(){ + lib.query("undefined"); + lib.query("undefineda undefinedb undefinedc"); + lib.query("lord high undefined"); + }, + end: null, + complete: null, + count: 3 +}); + +// ##################################################################################### +// ##################################################################################### + +window.onload = function(){ + + if(queue.length){ + + lib = suite[Object.keys(suite)[0]]; + lib.init(); + lib.add(text_data); + + setTimeout(match ? perform_match : perform, 200); + } +}; + +// ##################################################################################### +// ##################################################################################### + +function check_test(test){ + + if(test.init) test.init(); + if(test.start) test.start(); + if(test.prepare) test.prepare(); + test.fn(); + const results = lib.query("gulliver"); + if(test.end) test.end(); + if(test.complete) test.complete(); + + //console.log(results); + + return results.length >= 6; +} + +function msg(message, a){ + + a ? console.error(message, a) : console.error(message); + return false; +} + +// ##################################################################################### +// ##################################################################################### + +let str_results = ""; +const perf = window.performance; + perf.memory || (perf.memory = { usedJSHeapSize: 0 }); + +let current = 0; + +function perform(){ + + const test = queue[current]; + + if(current === 0) check_test(test) || msg("Main test failed!"); + + let elapsed = 0, memory = 0; + let status = true; + let loops = 0, cycle = 1, now = 0, max_cycle = test.cycle, inner_count = test.count; + + if(status){ + + if(test.init) test.init(); + + const end = perf.now() + duration; + + for(let start, mem_start, mem; now < end;){ + + if(test.start) test.start(loops); + + mem_start = perf.memory.usedJSHeapSize; + start = perf.now(); + for(let i = 0; i < cycle; i++) test.fn(); + now = perf.now(); + mem = perf.memory.usedJSHeapSize - mem_start; + elapsed += (now - start); + loops += cycle; + if(mem > 0) memory += mem; + + if(test.end) test.end(loops); + + // console.log(test.name); + // console.log("duration", duration); + // console.log("elapsed", elapsed); + // console.log("cycle", cycle); + // console.log("loops", loops); + + cycle *= duration / (elapsed || 1); + //cycle = loops / (elapsed || 1) * (duration - elapsed); + + // if(cycle < 0){ + // + // break; + // } + + if(max_cycle && (cycle > max_cycle)){ + + cycle = max_cycle; + } + } + + if(test.complete) test.complete(); + } + + loops *= inner_count || 1; + current++; + + if(window === window.top){ + + result.nodeValue = (str_results += (status ? test.name.padEnd(12) + String(Math.ceil(1000 / elapsed * loops)).padStart(8) + " op/s, Memory:\t" + (memory ? Math.ceil(memory / loops) : "-") : "- failed -") + "\n") + (current < queue.length ? "running..." : ""); + } + else{ + + window.top.postMessage(test.name + "," + (status ? Math.ceil(1000 / elapsed * loops) : 0) + "," + (status ? Math.ceil(memory / loops) : 0), location.protocol + "//" + location.hostname); //"https://nextapps-de.github.io" "https://raw.githack.com" + } + + if(current < queue.length){ + + setTimeout(perform, 200); + } + else{ + + current = 0; + } +} + +function perform_match(){ + + const test = queue[current]; + const query = decodeURI(params["query"]); + + check_test(test) || msg("Main test failed!"); + + const res = lib.query(query); + + if(window === window.top){ + + result.nodeValue = JSON.stringify(res); + } + else{ + + window.top.postMessage(JSON.stringify(res), location.protocol + "//" + location.hostname); + } + + +} diff --git a/index.html b/index.html new file mode 100644 index 0000000..712ad50 --- /dev/null +++ b/index.html @@ -0,0 +1,113 @@ + + + Benchmark of Web Templating Engines (Non-Keyed) + + + +

Benchmark of Full-Text-Search Libraries (Stress Test)

+ + + + + + + + + + + + +
+ + + Mode: + + + Duration: + + + Repeat: + + + keep best run +
+
+ + + + + + + + + + + + + + + + + +
LibraryMemory *Query (Single Term)Query (Multi Term)Query (Long)Query (Dupes)Query (Not Found)IndexScore
+
+* To measure memory you have to run in Chrome browser.

+Single Tests: + + + + + + + + \ No newline at end of file diff --git a/index.js b/index.js new file mode 100644 index 0000000..2adf063 --- /dev/null +++ b/index.js @@ -0,0 +1,348 @@ +(function(){ + + "use strict"; + + const iframe = document.getElementById("iframe"); + const options = { cache: false, store: false, pool: false }; + const mikado = Mikado(document.getElementById("result"), "row", options); + const list = Mikado(document.getElementById("lib"), "lib", options); + + const modes = window.location.hash.indexOf("modes") !== -1; + const encode = window.location.hash.indexOf("encode") !== -1; + const update = window.location.hash.indexOf("update") !== -1; + + let keep; + let repeat; + let index = -1; + + let lib = shuffle(modes || encode ? [ + + "flexsearch-balance", "flexsearch-default", "flexsearch-fast", + "flexsearch-match", "flexsearch-memory", "flexsearch-score", + "flexsearch-speed" + ]:[ + /*"flexsearch-0.6.2", "flexsearch-0.6.3",*/ "minisearch", "flexsearch-0.7.0", + "bm25", "bulksearch", "elasticlunr", + "fuzzysearch", "js-search", "jsii", + "fuse", "lunr", "wade", "lyra" + ]); + + list.render(lib); + + Mikado.route("start", function(target){ + + if(target.value === "Start"){ + + index = -1; + repeat = document.getElementById("repeat").value; + target.value = "Stop"; + setTimeout(runner, 200); + } + else{ + + current[index][test[2]] = ""; + target.value = "Start"; + iframe.src = ""; + index = lib.length; + } + + }).route("mode", function(target){ + + init(window.location.hash = "#" + target.value); + + }).listen("click").listen("change"); + + const test = encode ? [ + + "size", "memory", + "encode" + + ]: update ? [ + + "size", "memory", + "add", "update", "remove", + ]:[ + "size", "memory", + //"add", + "query-single", "query-multi", "query-long", "query-dupes", "not-found" + ]; + + const current = new Array(lib.length); + + // let size = { + // + // "bm25": 1, + // "bulksearch": 1, + // "elasticlunr": 1, + // "fuse": 1, + // "fuzzysearch": 1, + // "js-search": 1, + // "jsii": 1, + // "lunr": 1, + // "wade": 1, + // + // "flexsearch-0.6.2": 1, + // "flexsearch-0.6.3": 1, + // "flexsearch-0.7.0": 1, + // + // "flexsearch-balance": 1, + // "flexsearch-default": 1, + // "flexsearch-fast": 1, + // "flexsearch-match": 1, + // "flexsearch-memory": 1, + // "flexsearch-score": 1, + // "flexsearch-speed": 1 + // }; + + for(let x = 0; x < lib.length; x++){ + + current[x] = { + + "name": lib[x], + "size": 1, //size[lib[x]], + "memory": 0, + "score": "", + "index": "" + }; + + for(let y = 2; y < test.length + 1; y++){ + + current[x][test[y]] = ""; + current[x]["color_" + test[y]] = "transparent"; + } + } + + mikado.render(current); + + function runner(){ + + const duration = document.getElementById("duration").value; + keep = document.getElementById("keep").checked; + + index++; + const tmp = Object.assign({}, current[index]); + tmp[test[2]] = "run..."; + mikado.update(mikado.node(index), tmp); + iframe.src = "test/" + lib[index].toLowerCase() + "/" + "?duration=" + duration + (encode ? "&encode=true" : ""); + } + + function get_score(){ + + let max = new Array(test.length); + let val = new Array(test.length); + + for(let y = 0; y < test.length; y++){ + + max[y] = 0; + val[y] = []; + + for(let x = 0; x < lib.length; x++){ + + if(current[x][test[y]] && (current[x][test[y]] !== "-failed-")){ + + if(current[x][test[y]]){ + + val[y].push(current[x][test[y]]); + } + + if((test[y] === "size") || (test[y] === "memory")){ + + if((current[x][test[y]] < max[y]) || !max[y]){ + + max[y] = current[x][test[y]]; + } + } + else{ + + if(current[x][test[y]] > max[y]){ + + max[y] = current[x][test[y]]; + } + } + } + } + } + + let score = new Array(lib.length); + let index = new Array(lib.length); + let length = new Array(lib.length); + let max_score = 0, max_index = 0; + + for(let x = 0; x < lib.length; x++){ + + score[x] = 0; + index[x] = 0; + length[x] = 0; + + for(let y = 0; y < test.length; y++){ + + if(current[x][test[y]] && (current[x][test[y]] !== "-failed-")){ + + length[x]++; + + if((test[y] === "size") || (test[y] === "memory")){ + + score[x] += Math.sqrt(median(val[y]) / current[x][test[y]]); + index[x] += Math.sqrt(max[y] / current[x][test[y]]); + current[x]["color_" + test[y]] = color(Math.sqrt(max[y]), Math.sqrt(current[x][test[y]])); + } + else{ + + score[x] += current[x][test[y]] / median(val[y]); + index[x] += current[x][test[y]] / max[y]; + current[x]["color_" + test[y]] = color(current[x][test[y]], max[y]); + } + } + else{ + + current[x]["color_" + test[y]] = "#ccc"; + } + } + + current[x]["score"] = (score[x] / length[x] * 1000 + 0.5) | 0; + current[x]["index"] = (index[x] / length[x] * 1000 + 0.5) | 0; + if(max_score < current[x]["score"]) max_score = current[x]["score"]; + if(max_index < current[x]["index"]) max_index = current[x]["index"]; + } + + for(let x = 0; x < lib.length; x++){ + + current[x]["color_score"] = color(current[x]["score"], max_score); + current[x]["color_index"] = color(current[x]["index"], max_index); + } + } + + function color(current, max){ + + const percent = current / max * 100; + const r = percent < 50 ? 255 : (255 - (percent * 2 - 100) * 255 / 100) | 0; + const g = percent > 50 ? 255 : ((percent * 2) * 255 / 100) | 0; + + return 'rgb(' + r + ', ' + g + ', 0)'; + } + + window.onmessage = function(event){ + + if(index < lib.length){ + + if(event.origin === location.protocol + "//" + location.hostname){ // "https://nextapps-de.github.io" "https://raw.githack.com" + + //console.log(event.data); + + const parts = event.data.split(","); + + let tmp = parseInt(parts[1], 10); + + if(keep){ + + if(!current[index][parts[0]] || (tmp > current[index][parts[0]])){ + + current[index][parts[0]] = tmp; + } + } + else{ + + if(current[index][parts[0]]){ + + current[index][parts[0]] += tmp; + } + else{ + + current[index][parts[0]] = tmp; + } + } + + tmp = parseInt(parts[2], 10); + + if(current[index]["memory"]){ + + current[index]["memory"] += tmp; + } + else{ + + current[index]["memory"] = tmp; + } + + if((repeat === 1) && (!current[index][parts[0]])){ + + current[index][parts[0]] = "-failed-"; + } + + if(parts[0] === "not-found"){ + + if(index < lib.length - 1){ + + mikado.update(index, current[index]); + setTimeout(runner, 50); + } + else{ + + get_score(); + + current.sort(function(a, b){ + + return b["score"] - a["score"]; + }); + + for(let i = 0; i < lib.length; i++){ + + lib[i] = current[i]["name"]; + } + + mikado.render(current); + + if(--repeat > 0){ + + index = -1; + setTimeout(runner, 50); + } + else{ + + Mikado.dispatch("start", document.getElementById("start")); + } + } + } + else{ + + const tmp = Object.assign({}, current[index]); + tmp[test[test.indexOf(parts[0]) + 1]] = "run..."; + mikado.update(index, tmp); + } + } + } + }; + + function shuffle(items){ + + for(let i = items.length - 1, j, x; i > 0; i--) { + + j = (Math.random() * i) | 0; + x = items[i]; + items[i] = items[j]; + items[j] = x; + } + + return items; + } + + function median(arr){ + + arr.sort(function(a, b){ + + return a - b; + }); + + const length = arr.length; + const half = length / 2; + + return ( + + length % 2 ? + + arr[half | 0] + : + (arr[half - 1] + arr[half]) / 2 + ); + } + +}()); \ No newline at end of file diff --git a/match.html b/match.html new file mode 100644 index 0000000..b498bc8 --- /dev/null +++ b/match.html @@ -0,0 +1,39 @@ + + + + + Matching Test + + + +

Relevance Scoring Comparison

+

Indexed Text: "Gulliver's Travels" (Swift Jonathan 1726)

+
+
+ + + + + + + +
Query
+
+
+
+
Either no results or relevant content was not included in results.
+
Most relevant results was not found in the first place.
+
Most relevant results was successfully found in the first place.
+ Note: Open console and type e.g. data[493] +
+ + + + diff --git a/match.js b/match.js new file mode 100644 index 0000000..7b7f920 --- /dev/null +++ b/match.js @@ -0,0 +1,150 @@ +import { text_data } from "../demo/data/gulliver.js"; + +const iframe = document.getElementsByTagName("iframe")[0]; +const encode = false; +const lib = encode ? [ + + "flexsearch-balance", "flexsearch-default", "flexsearch-fast", + "flexsearch-match", "flexsearch-memory", "flexsearch-score", + "flexsearch-speed" +]:[ + /*"flexsearch-0.6.2", "flexsearch-0.6.3",*/ "flexsearch-0.7.0-match", + "bm25", "bulksearch-match", "elasticlunr", + "fuzzysearch", "js-search", "jsii", + "minisearch-match", "fuse-match", "lunr", "wade", "lyra" +]; + +let promise; + +window.onmessage = function(event){ + + if(event.origin === location.protocol + "//" + location.hostname){ + + const results = JSON.parse(event.data); + //console.log(results); + promise(results); + promise = null; + } +}; + +window.data = text_data; + +const tpl_td = document.createElement("td"); + tpl_td.appendChild(document.createTextNode("")) + +const root_head = document.getElementsByTagName("thead")[0].firstElementChild, + root_body = document.getElementsByTagName("tbody")[0]; + +const tpl_tr = document.createElement("tr"); + +for(let i = 0; i < lib.length + 1; i++){ // amount of libs + 1 for first row + + tpl_tr.appendChild(tpl_td.cloneNode(true)); +} + +for(let i = 0; i < 12; i++){ // amount of tests + 1 for first row + + const tr = tpl_tr.cloneNode(true); + tr.id = "test-" + (i + 1); + + root_body.appendChild(tr); + root_head.appendChild(tpl_td.cloneNode(true)); +} + +const headers = root_head.getElementsByTagName("td"); + +// ----------------------------------------------------------- + +await do_test("test-1", "without breach of modesty", [2684]); +await do_test("test-2", "went softly stream", [2432]); +await do_test("test-3", "princes of the ambition", [2259, 396]); +await do_test("test-4", "five-thousand leagues", [7]); +await do_test("test-5", "raise up soft", [2069]); +await do_test("test-6", "disgust the bigness", [946]); +await do_test("test-7", "bignes of splaknuk", [781]); +await do_test("test-8", "matematikal musikal instruments", [1480]); +await do_test("test-9", "composition of minerals gums juices vegetables", [1676, 2337]); +await do_test("test-10", "general camberlayhn", [520]); +await do_test("test-11", "the end defeat", [2209]); +await do_test("test-12", "fast chief", [1275]); + +// --------------------------------------- + +async function do_test(id, query, ref){ + + const nodes = document.getElementById(id).getElementsByTagName("td"); + nodes[0].firstChild.nodeValue = query; + + for(let i = 0, current; i < lib.length; i++){ + + current = lib[i].replace("-0.7.0", "").replace("-match", ""); + headers[i + 1].firstChild.nodeValue = current; + + const node = nodes[i + 1]; + const style = node.style; + + node.firstChild.nodeValue = "run ..."; + + let results = await new Promise(function(resolve){ + + promise = resolve; + iframe.src = "test/" + lib[i] + "/?query=" + decodeURI(query) + (encode ? "&encode=true" : "") + "#match"; + }); + + if(results.length){ + + switch(current){ + + case "elasticlunr": + case "lunr": + results = results.map(val => val.ref); + break; + + case "wade": + results = results.map(val => val.index); + break; + + case "js-search": + case "minisearch": + case "jsii": + case "bm25": + results = results.map(val => val.id); + break; + + case "fuzzysearch": + results = results.map(val => text_data.indexOf(val)); + break; + } + } + + for(let a = 0; a < ref.length; a++){ + + const current = ref[a]; + + node.firstChild.nodeValue = results[0] || "-"; + style.color = "#fff"; + style.backgroundColor = ""; + + + if((results[a] === current) || + (results[a] === ("" + current))){ + + if(style.backgroundColor !== "orange"){ + + style.backgroundColor = "#0a0"; + } + } + else if(!results.length || + ((results.indexOf(current) === -1) && + (results.indexOf(("" + current)) === -1))){ + + style.backgroundColor = "#f00"; + break; + } + else{ + + style.backgroundColor = "orange"; + } + } + } +} diff --git a/test/bm25/index.html b/test/bm25/index.html new file mode 100644 index 0000000..ee4ce81 --- /dev/null +++ b/test/bm25/index.html @@ -0,0 +1,54 @@ + + + + + Benchmark + + +

Benchmark: bm25


+

Indexed Text: "Gulliver's Travels" (Swift Jonathan 1726)

+
+ + + + diff --git a/test/bulksearch-match/index.html b/test/bulksearch-match/index.html new file mode 100644 index 0000000..8ff2104 --- /dev/null +++ b/test/bulksearch-match/index.html @@ -0,0 +1,51 @@ + + + + + Benchmark + + +

Benchmark: bulksearch-0.1.3


+

Indexed Text: "Gulliver's Travels" (Swift Jonathan 1726)

+
+ + + + diff --git a/test/bulksearch/index.html b/test/bulksearch/index.html new file mode 100644 index 0000000..d1aa85f --- /dev/null +++ b/test/bulksearch/index.html @@ -0,0 +1,54 @@ + + + + + Benchmark + + +

Benchmark: bulksearch-0.1.3


+

Indexed Text: "Gulliver's Travels" (Swift Jonathan 1726)

+
+ + + + diff --git a/test/elasticlunr/index.html b/test/elasticlunr/index.html new file mode 100644 index 0000000..850d877 --- /dev/null +++ b/test/elasticlunr/index.html @@ -0,0 +1,50 @@ + + + + + Benchmark + + +

Benchmark: elasticlunr-0.9.6


+

Indexed Text: "Gulliver's Travels" (Swift Jonathan 1726)

+
+ + + + diff --git a/test/flexsearch-0.6.2/index.html b/test/flexsearch-0.6.2/index.html new file mode 100644 index 0000000..c056c84 --- /dev/null +++ b/test/flexsearch-0.6.2/index.html @@ -0,0 +1,59 @@ + + + + + Benchmark + + +

Benchmark: flexsearch-0.6.2


+

Indexed Text: "Gulliver's Travels" (Swift Jonathan 1726)

+
+ + + + diff --git a/test/flexsearch-0.6.3/index.html b/test/flexsearch-0.6.3/index.html new file mode 100644 index 0000000..5ffb4cf --- /dev/null +++ b/test/flexsearch-0.6.3/index.html @@ -0,0 +1,59 @@ + + + + + Benchmark + + +

Benchmark: flexsearch-0.6.3


+

Indexed Text: "Gulliver's Travels" (Swift Jonathan 1726)

+
+ + + + diff --git a/test/flexsearch-0.7.0-context/index.html b/test/flexsearch-0.7.0-context/index.html new file mode 100644 index 0000000..9636e6f --- /dev/null +++ b/test/flexsearch-0.7.0-context/index.html @@ -0,0 +1,51 @@ + + + + + Benchmark + + +

Benchmark: flexsearch-0.7.0


+

Indexed Text: "Gulliver's Travels" (Swift Jonathan 1726)

+
+ + + diff --git a/test/flexsearch-0.7.0-match/index.html b/test/flexsearch-0.7.0-match/index.html new file mode 100644 index 0000000..a83f0fc --- /dev/null +++ b/test/flexsearch-0.7.0-match/index.html @@ -0,0 +1,57 @@ + + + + + Benchmark + + +

Benchmark: flexsearch-0.7.0


+

Indexed Text: "Gulliver's Travels" (Swift Jonathan 1726)

+
+ + + diff --git a/test/flexsearch-0.7.0/index.html b/test/flexsearch-0.7.0/index.html new file mode 100644 index 0000000..e056ccf --- /dev/null +++ b/test/flexsearch-0.7.0/index.html @@ -0,0 +1,68 @@ + + + + + Benchmark + + +

Benchmark: flexsearch-0.7.0


+

Indexed Text: "Gulliver's Travels" (Swift Jonathan 1726)

+
+ + + + diff --git a/test/flexsearch-balance/index.html b/test/flexsearch-balance/index.html new file mode 100644 index 0000000..6374c9c --- /dev/null +++ b/test/flexsearch-balance/index.html @@ -0,0 +1,39 @@ + + + + + Benchmark + + +

Benchmark: flexsearch-ctx-0.7.0


+

Indexed Text: "Gulliver's Travels" (Swift Jonathan 1726)

+
+ + + + diff --git a/test/flexsearch-default/index.html b/test/flexsearch-default/index.html new file mode 100644 index 0000000..260dc71 --- /dev/null +++ b/test/flexsearch-default/index.html @@ -0,0 +1,39 @@ + + + + + Benchmark + + +

Benchmark: flexsearch-ctx-0.7.0


+

Indexed Text: "Gulliver's Travels" (Swift Jonathan 1726)

+
+ + + + diff --git a/test/flexsearch-doc/index.html b/test/flexsearch-doc/index.html new file mode 100644 index 0000000..d4e9f44 --- /dev/null +++ b/test/flexsearch-doc/index.html @@ -0,0 +1,52 @@ + + + + + Benchmark + + +

Benchmark: flexsearch-ctx-0.7.0


+

Indexed Text: "Gulliver's Travels" (Swift Jonathan 1726)

+
+ + + + diff --git a/test/flexsearch-fast/index.html b/test/flexsearch-fast/index.html new file mode 100644 index 0000000..fbca7f1 --- /dev/null +++ b/test/flexsearch-fast/index.html @@ -0,0 +1,39 @@ + + + + + Benchmark + + +

Benchmark: flexsearch-ctx-0.7.0


+

Indexed Text: "Gulliver's Travels" (Swift Jonathan 1726)

+
+ + + + diff --git a/test/flexsearch-match/index.html b/test/flexsearch-match/index.html new file mode 100644 index 0000000..12ab3ab --- /dev/null +++ b/test/flexsearch-match/index.html @@ -0,0 +1,39 @@ + + + + + Benchmark + + +

Benchmark: flexsearch-ctx-0.7.0


+

Indexed Text: "Gulliver's Travels" (Swift Jonathan 1726)

+
+ + + + diff --git a/test/flexsearch-memory/index.html b/test/flexsearch-memory/index.html new file mode 100644 index 0000000..06a24b2 --- /dev/null +++ b/test/flexsearch-memory/index.html @@ -0,0 +1,38 @@ + + + + + Benchmark + + +

Benchmark: flexsearch-ctx-0.7.0


+

Indexed Text: "Gulliver's Travels" (Swift Jonathan 1726)

+
+ + + + diff --git a/test/flexsearch-score/index.html b/test/flexsearch-score/index.html new file mode 100644 index 0000000..61d5782 --- /dev/null +++ b/test/flexsearch-score/index.html @@ -0,0 +1,38 @@ + + + + + Benchmark + + +

Benchmark: flexsearch-ctx-0.7.0


+

Indexed Text: "Gulliver's Travels" (Swift Jonathan 1726)

+
+ + + + diff --git a/test/flexsearch-speed/index.html b/test/flexsearch-speed/index.html new file mode 100644 index 0000000..ebd9124 --- /dev/null +++ b/test/flexsearch-speed/index.html @@ -0,0 +1,38 @@ + + + + + Benchmark + + +

Benchmark: flexsearch-ctx-0.7.0


+

Indexed Text: "Gulliver's Travels" (Swift Jonathan 1726)

+
+ + + + diff --git a/test/fuse-match/index.html b/test/fuse-match/index.html new file mode 100644 index 0000000..81327fe --- /dev/null +++ b/test/fuse-match/index.html @@ -0,0 +1,52 @@ + + + + + Benchmark + + +

Benchmark: fuse-3.3.0


+

Indexed Text: "Gulliver's Travels" (Swift Jonathan 1726)

+
+ + + + diff --git a/test/fuse/index.html b/test/fuse/index.html new file mode 100644 index 0000000..888e68e --- /dev/null +++ b/test/fuse/index.html @@ -0,0 +1,49 @@ + + + + + Benchmark + + +

Benchmark: fuse-3.3.0


+

Indexed Text: "Gulliver's Travels" (Swift Jonathan 1726)

+
+ + + + diff --git a/test/fuzzysearch/index.html b/test/fuzzysearch/index.html new file mode 100644 index 0000000..6070c1a --- /dev/null +++ b/test/fuzzysearch/index.html @@ -0,0 +1,33 @@ + + + + + Benchmark + + +

Benchmark: fuzzysearch


+

Indexed Text: "Gulliver's Travels" (Swift Jonathan 1726)

+
+ + + + diff --git a/test/js-search/index.html b/test/js-search/index.html new file mode 100644 index 0000000..e1539a8 --- /dev/null +++ b/test/js-search/index.html @@ -0,0 +1,44 @@ + + + + + Benchmark + + +

Benchmark: js-search-1.4.2


+

Indexed Text: "Gulliver's Travels" (Swift Jonathan 1726)

+
+ + + + diff --git a/test/jsii/index.html b/test/jsii/index.html new file mode 100644 index 0000000..c567b94 --- /dev/null +++ b/test/jsii/index.html @@ -0,0 +1,48 @@ + + + + + Benchmark + + +

Benchmark: jsii


+

Indexed Text: "Gulliver's Travels" (Swift Jonathan 1726)

+
+ + + + + diff --git a/test/lunr/index.html b/test/lunr/index.html new file mode 100644 index 0000000..42b748e --- /dev/null +++ b/test/lunr/index.html @@ -0,0 +1,49 @@ + + + + + Benchmark + + +

Benchmark: lunr-2.3.5


+

Indexed Text: "Gulliver's Travels" (Swift Jonathan 1726)

+
+ + + + diff --git a/test/lyra/index.html b/test/lyra/index.html new file mode 100644 index 0000000..c656723 --- /dev/null +++ b/test/lyra/index.html @@ -0,0 +1,52 @@ + + + + + Benchmark + + +

Benchmark: lyra-0.2.4


+

Indexed Text: "Gulliver's Travels" (Swift Jonathan 1726)

+
+ + + diff --git a/test/minisearch-match/index.html b/test/minisearch-match/index.html new file mode 100644 index 0000000..214f1dc --- /dev/null +++ b/test/minisearch-match/index.html @@ -0,0 +1,42 @@ + + + + + Benchmark + + +

Benchmark: minisearch


+

Indexed Text: "Gulliver's Travels" (Swift Jonathan 1726)

+
+ + + + diff --git a/test/minisearch/index.html b/test/minisearch/index.html new file mode 100644 index 0000000..6ea9d55 --- /dev/null +++ b/test/minisearch/index.html @@ -0,0 +1,42 @@ + + + + + Benchmark + + +

Benchmark: minisearch


+

Indexed Text: "Gulliver's Travels" (Swift Jonathan 1726)

+
+ + + + diff --git a/test/wade/index.html b/test/wade/index.html new file mode 100644 index 0000000..ecbfcae --- /dev/null +++ b/test/wade/index.html @@ -0,0 +1,37 @@ + + + + + Benchmark + + +

Benchmark: wade-0.3.3


+

Indexed Text: "Gulliver's Travels" (Swift Jonathan 1726)

+
+ + + + diff --git a/tpl/lib.html b/tpl/lib.html new file mode 100644 index 0000000..20657c9 --- /dev/null +++ b/tpl/lib.html @@ -0,0 +1,3 @@ +
  • + {{data}} +
  • \ No newline at end of file diff --git a/tpl/lib.js b/tpl/lib.js new file mode 100644 index 0000000..d8c3724 --- /dev/null +++ b/tpl/lib.js @@ -0,0 +1,17 @@ +Mikado.register({ + "t": "li", + "i": { + "t": "a", + "a": { + "href": [ + "'test/' + data + '/'" + ] + }, + "x": [ + "data" + ] + }, + "d": false, + "n": "lib", + "v": "0.7.44" +}); \ No newline at end of file diff --git a/tpl/row.html b/tpl/row.html new file mode 100644 index 0000000..5c30639 --- /dev/null +++ b/tpl/row.html @@ -0,0 +1,12 @@ + + {{data.name}} + {{data.size}} + {{data.memory}} + {{data['query-single']}} + {{data['query-multi']}} + {{data['query-long']}} + {{data['query-dupes']}} + {{data['not-found']}} + {{data.index}} + {{data.score}} + diff --git a/tpl/row.js b/tpl/row.js new file mode 100644 index 0000000..68b1e1e --- /dev/null +++ b/tpl/row.js @@ -0,0 +1,104 @@ +Mikado.register({ + "t": "tr", + "i": [ + { + "t": "td", + "x": [ + "data.name" + ] + }, + { + "t": "td", + "a": { + "hidden": true + }, + "s": [ + "'background-color:' + data.color_size" + ], + "x": [ + "data.size" + ] + }, + { + "t": "td", + "s": [ + "'background-color:' + data.color_memory" + ], + "x": [ + "data.memory" + ] + }, + { + "t": "td", + "s": [ + "'background-color:' + data['color_query-single']" + ], + "x": [ + "data['query-single']" + ] + }, + { + "t": "td", + "s": [ + "'background-color:' + data['color_query-multi']" + ], + "x": [ + "data['query-multi']" + ] + }, + { + "t": "td", + "s": [ + "'background-color:' + data['color_query-long']" + ], + "x": [ + "data['query-long']" + ] + }, + { + "t": "td", + "s": [ + "'background-color:' + data['color_query-dupes']" + ], + "x": [ + "data['query-dupes']" + ] + }, + { + "t": "td", + "s": [ + "'background-color:' + data['color_not-found']" + ], + "x": [ + "data['not-found']" + ] + }, + { + "t": "td", + "i": { + "t": "b", + "x": [ + "data.index" + ] + }, + "s": [ + "'background-color:' + data.color_index" + ] + }, + { + "t": "td", + "i": { + "t": "b", + "x": [ + "data.score" + ] + }, + "s": [ + "'background-color:' + data.color_score" + ] + } + ], + "d": false, + "n": "row", + "v": "0.7.44" +}); \ No newline at end of file