diff --git a/performance/benchmark/csv_overhead.ts b/performance/benchmark/csv_overhead.ts new file mode 100644 index 0000000..81b9944 --- /dev/null +++ b/performance/benchmark/csv_overhead.ts @@ -0,0 +1,59 @@ +import { stringify } from "jsr:@std/csv"; + +const results = JSON.parse(Deno.readTextFileSync("results.json")); + +type TestSetup = [number, number, number]; + +const csv = [["ID", "A", "B", "C", "AB", "ABC"]]; + +const a = getResults([1, 0, 0], [1, 0, 0]); + +const b = getResults([0, 0, 1], [0, 0, 1]); + +const c = getResults([0, 1, 0], [0, 1, 0]); + +const d = getResults([1, 0, 1], [1, 0, 1]); + +const e = getResults([1, 1, 1], [1, 1, 1]); + +for (let i = 0; i < 10; i++) { + csv.push([ + String(i + 1), + a[i].toString(), + b[i].toString(), + c[i].toString(), + d[i].toString(), + e[i].toString(), + ]); +} + +Deno.writeTextFileSync("results_overhead.csv", stringify(csv)); +console.log("DONE"); +console.log("Results saved to results_overhead.csv"); + +function getResults( + initialSetup: TestSetup, + increment: TestSetup, +): number[] { + let setup = initialSetup; + const output: number[] = []; + for (let i = 0; i < 10; i++) { + const key = `${setup[0]} ${setup[1]} ${setup[2]}`; + + const overhead = results[key].ok + ? Math.max( + (results[key].ldkit - results[key].query) / results[key].query * 100, + 0, + ) + : -1; + + output.push(overhead); + + setup = [ + setup[0] + increment[0], + setup[1] + increment[1], + setup[2] + increment[2], + ]; + } + return output; +} diff --git a/performance/benchmark/overhead.ts b/performance/benchmark/overhead.ts new file mode 100644 index 0000000..6f256b6 --- /dev/null +++ b/performance/benchmark/overhead.ts @@ -0,0 +1,43 @@ +import results from "./results.json" with { type: "json" }; + +let totalLDkit = 0; +let totalQuery = 0; + +for (const result of Object.values(results)) { + const { ok, ldkit, query } = result; + if (!ok) { + continue; + } + totalLDkit += ldkit; + totalQuery += query; +} + +const overhead = totalLDkit - totalQuery; + +const overheadPercentage = ((overhead / totalQuery) * 100).toFixed(2); + +console.log(`Total LDkit time: ${totalLDkit}ms`); +console.log(`Total Query time: ${totalQuery}ms`); +console.log(`Overhead: ${overhead}ms`); +console.log(`Overhead percentage: ${overheadPercentage}%`); + +const overheadsPerTest: number[] = []; + +for (const result of Object.values(results)) { + const { ok, ldkit, query } = result; + if (!ok) { + continue; + } + totalLDkit += ldkit; + totalQuery += query; + const overhead = ldkit - query; + const overheadPercentage = overhead / query; + overheadsPerTest.push(overheadPercentage); +} + +const averageOverhead = overheadsPerTest.reduce((acc, val) => acc + val, 0) / + overheadsPerTest.length; + +console.log( + `Average overhead per test: ${(averageOverhead * 100).toFixed(2)}%`, +); diff --git a/performance/benchmark/results.csv b/performance/benchmark/results.csv index 1a7c8d2..2cd281a 100644 --- a/performance/benchmark/results.csv +++ b/performance/benchmark/results.csv @@ -1,11 +1,11 @@ ID,A,B,C,AB,ABC -1,259.35602500000016,223.3031000000001,177.75637499999357,339.4748500000569,382.5155375000031 -2,145.9830999999997,358.12796249999974,367.68396250000296,483.4633374999976,744.0240874999727 -3,182.95062499999995,491.27642500000184,574.1751874999973,631.46007500001,1467.3717624999845 -4,211.21449999999982,641.1395750000011,1262.43145,797.7328250000137,3339.4339499999915 -5,288.1949625000011,782.5919999999951,3194.900849999991,978.200512499956,9547.397549999994 -6,273.74796249999963,934.7983625000015,9079.426387499996,1264.4972874999803,-1 -7,294.57772500000056,1144.5207000000064,-1,1345.340875000009,-1 -8,317.1858250000005,1223.189887499997,-1,1642.034874999983,-1 -9,348.3095250000015,1352.5721749999939,-1,1748.8977749999904,-1 -10,373.6350999999995,1507.1498249999968,-1,1922.745737499994,-1 +1,86.91687500000012,223.3031000000001,177.75637499999357,339.4748500000569,382.5155375000031 +2,120.86553750000002,358.12796249999974,367.68396250000296,483.4633374999976,744.0240874999727 +3,148.3907875000001,491.27642500000184,574.1751874999973,631.46007500001,1467.3717624999845 +4,182.8427625000004,641.1395750000011,1262.43145,797.7328250000137,3339.4339499999915 +5,216.87427500000013,782.5919999999951,3194.900849999991,978.200512499956,9547.397549999994 +6,248.95501250000007,934.7983625000015,9079.426387499996,1264.4972874999803,-1 +7,271.39255,1144.5207000000064,-1,1345.340875000009,-1 +8,297.6305875000003,1223.189887499997,-1,1642.034874999983,-1 +9,337.4994749999996,1352.5721749999939,-1,1748.8977749999904,-1 +10,358.48811249999835,1507.1498249999968,-1,1922.745737499994,-1 diff --git a/performance/benchmark/results.json b/performance/benchmark/results.json index 45f3864..c2a15b8 100644 --- a/performance/benchmark/results.json +++ b/performance/benchmark/results.json @@ -1,53 +1,53 @@ { "1 0 0": { "ok": true, - "ldkit": 259.35602500000016, - "query": 113.36782500000015 + "ldkit": 86.91687500000012, + "query": 76.78207499999985 }, "2 0 0": { "ok": true, - "ldkit": 145.9830999999997, - "query": 120.26019999999983 + "ldkit": 120.86553750000002, + "query": 109.2842750000001 }, "3 0 0": { "ok": true, - "ldkit": 182.95062499999995, - "query": 164.85877499999992 + "ldkit": 148.3907875000001, + "query": 134.2350124999998 }, "4 0 0": { "ok": true, - "ldkit": 211.21449999999982, - "query": 188.0849250000001 + "ldkit": 182.8427625000004, + "query": 166.82879999999977 }, "5 0 0": { "ok": true, - "ldkit": 288.1949625000011, - "query": 254.67058749999978 + "ldkit": 216.87427500000013, + "query": 193.6325374999999 }, "6 0 0": { "ok": true, - "ldkit": 273.74796249999963, - "query": 240.89390000000003 + "ldkit": 248.95501250000007, + "query": 227.65787499999942 }, "7 0 0": { "ok": true, - "ldkit": 294.57772500000056, - "query": 260.15794999999935 + "ldkit": 271.39255, + "query": 249.5683499999991 }, "8 0 0": { "ok": true, - "ldkit": 317.1858250000005, - "query": 304.3310500000007 + "ldkit": 297.6305875000003, + "query": 279.2455124999992 }, "9 0 0": { "ok": true, - "ldkit": 348.3095250000015, - "query": 318.1802874999994 + "ldkit": 337.4994749999996, + "query": 307.2077250000025 }, "10 0 0": { "ok": true, - "ldkit": 373.6350999999995, - "query": 358.9701625000007 + "ldkit": 358.48811249999835, + "query": 331.4763875000008 }, "0 0 1": { "ok": true, @@ -249,4 +249,4 @@ "ldkit": -1, "query": -1 } -} \ No newline at end of file +} diff --git a/performance/benchmark/results_overhead.csv b/performance/benchmark/results_overhead.csv new file mode 100644 index 0000000..f20451a --- /dev/null +++ b/performance/benchmark/results_overhead.csv @@ -0,0 +1,11 @@ +ID,A,B,C,AB,ABC +1,13.199434894147219,13.613108725421148,17.886133705597807,17.798657117296678,8.362144039943576 +2,10.597373226843398,7.781767990095872,3.774829420797612,12.178340542479079,4.501471084463792 +3,10.545516208001478,4.298972394582102,3.059551098104291,4.357854221413046,5.654428882503719 +4,9.599039554321937,5.73080723873292,2.681765311701622,4.01212003609577,3.62504456011606 +5,12.003012406941286,6.5375297719090755,2.0117965217223923,5.653283411402567,0 +6,9.354887240338467,5.403039991704185,0.32870334308490345,6.949160292403931,-1 +7,8.744778734964193,7.636622653810708,-1,6.49695498355808,-1 +8,6.583839015139448,6.167205161346182,-1,11.661504386827065,-1 +9,9.86034775004336,6.36469264396835,-1,8.220402432175417,-1 +10,8.148913774438157,7.770288584629132,-1,7.261480241136886,-1