From f7a6a4ab026032aca868a27fa5be6fd0199fb6e4 Mon Sep 17 00:00:00 2001 From: Brion Vibber Date: Mon, 4 Sep 2023 10:14:07 -0700 Subject: [PATCH 1/3] dataset --- speci.js | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/speci.js b/speci.js index 3b31dcf..e6e8f46 100644 --- a/speci.js +++ b/speci.js @@ -18,8 +18,9 @@ function doit() { function make_randomized(x, y) { let rando = (Math.random() * (2 ** 32 - 1)) | 0; - let buckets = 256; - let r = 'random' + (rando % buckets); + //let buckets = 256; + //random = rando % buckets; + let r = 'random' + rando; let o = {[r]: r}; if (Math.random() > 0.5) { o.y = y; @@ -32,7 +33,8 @@ function doit() { } const million = 1000 * 1000; - const n = 10 * million; + const n = 1 * million; + const runs = 100 * n; function bulk(filler) { let a = []; @@ -64,8 +66,8 @@ function doit() { console.log(`run ${i+1}`); report(() => { let sumX = 0, sumY = 0; - for (let i = 0; i < dataSet.length; i++) { - let item = dataSet[i]; + for (let i = 0; i < runs; i++) { + let item = dataSet[i % dataSet.length]; sumX += item.x; sumY += item.y; } From 7878913dd9328568596335cdeda59f4159a1dce1 Mon Sep 17 00:00:00 2001 From: Brion Vibber Date: Mon, 4 Sep 2023 10:19:17 -0700 Subject: [PATCH 2/3] makefile test --- Makefile | 5 +++++ speci.js | 40 +++++++++++++++++++++------------------- 2 files changed, 26 insertions(+), 19 deletions(-) create mode 100644 Makefile diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..6d923eb --- /dev/null +++ b/Makefile @@ -0,0 +1,5 @@ +test : + node speci.js x-first + node speci.js y-first + node speci.js mixed + node speci.js randomized diff --git a/speci.js b/speci.js index e6e8f46..1fa6a6e 100644 --- a/speci.js +++ b/speci.js @@ -1,4 +1,4 @@ -function doit() { +function doit(mode) { function make_x_first(x,y) { return {x, y}; @@ -34,7 +34,7 @@ function doit() { const million = 1000 * 1000; const n = 1 * million; - const runs = 100 * n; + const runs = 1000 * n; function bulk(filler) { let a = []; @@ -44,10 +44,21 @@ function doit() { return a; } - const x_first = bulk(make_x_first); - const y_first = bulk(make_y_first); - const mixed = bulk(make_mixed); - const randomized = bulk(make_randomized); + let funcMap = { + 'x-first': make_x_first, + 'y-first': make_y_first, + 'mixed': make_mixed, + 'randomized': make_randomized, + }; + let func = funcMap[mode]; + if (!func) { + console.log(`Pass as parameter one of:`); + for (let key of Object.keys(funcMap)) { + console.log(` ${key}`); + } + process.exit(1); + } + const data = bulk(func); function time(func) { const start = Date.now(); @@ -77,18 +88,9 @@ function doit() { } } - console.log(`** x_first`); - demo(x_first); - - console.log(`** y_first`); - demo(y_first); - - console.log(`** mixed`); - demo(mixed); - - console.log(`** randomized`); - demo(randomized); - + console.log(`** ${mode}`); + demo(data); } -doit(); \ No newline at end of file +let mode = String(process.argv[2]); +doit(mode); \ No newline at end of file From 5e084b9a7143f76b51341c9261c8e47a7d63ca15 Mon Sep 17 00:00:00 2001 From: Brion Vibber Date: Mon, 4 Sep 2023 10:23:59 -0700 Subject: [PATCH 3/3] whee --- Makefile | 4 +++- readme.md | 47 +++++++++++++++++++++++++++++++---------------- speci.js | 25 ++++++++++++------------- 3 files changed, 46 insertions(+), 30 deletions(-) diff --git a/Makefile b/Makefile index 6d923eb..89af941 100644 --- a/Makefile +++ b/Makefile @@ -2,4 +2,6 @@ test : node speci.js x-first node speci.js y-first node speci.js mixed - node speci.js randomized + node speci.js rand-suffix + node speci.js rand-prefix + diff --git a/readme.md b/readme.md index 81dd0d4..d2c0880 100644 --- a/readme.md +++ b/readme.md @@ -9,44 +9,59 @@ handle a couple of different variants -- but this might not be true of all possibilities. 256 randomized variants is linearly slower. ``` - % node speci.js -** x_first +% make test +node speci.js x-first +** x-first run 1 -72 ms +189 ms run 2 -15 ms +293 ms run 3 -22 ms +178 ms -** y_first +node speci.js y-first +** y-first run 1 -73 ms +196 ms run 2 -23 ms +175 ms run 3 -20 ms +174 ms +node speci.js mixed ** mixed run 1 -2766 ms +732 ms run 2 -52 ms +716 ms run 3 -53 ms +912 ms -** randomized +node speci.js rand-suffix +** rand-suffix run 1 -464 ms +15596 ms run 2 -445 ms +15636 ms run 3 -445 ms +15501 ms + +node speci.js rand-prefix +** rand-prefix +run 1 +18896 ms + +run 2 +18883 ms + +run 3 +18784 ms ``` diff --git a/speci.js b/speci.js index 1fa6a6e..8cf3b0d 100644 --- a/speci.js +++ b/speci.js @@ -16,25 +16,23 @@ function doit(mode) { } } - function make_randomized(x, y) { + function make_rand_prefix(x, y) { let rando = (Math.random() * (2 ** 32 - 1)) | 0; - //let buckets = 256; - //random = rando % buckets; let r = 'random' + rando; - let o = {[r]: r}; - if (Math.random() > 0.5) { - o.y = y; - o.x = x; - } else { - o.x = x; - o.y = y; - } + let o = {[r]: r, x, y}; + return o; + } + + function make_rand_suffix(x, y) { + let rando = (Math.random() * (2 ** 32 - 1)) | 0; + let r = 'random' + rando; + let o = {x, y, [r]: r}; return o; } const million = 1000 * 1000; const n = 1 * million; - const runs = 1000 * n; + const runs = 100 * n; function bulk(filler) { let a = []; @@ -48,7 +46,8 @@ function doit(mode) { 'x-first': make_x_first, 'y-first': make_y_first, 'mixed': make_mixed, - 'randomized': make_randomized, + 'rand-prefix': make_rand_prefix, + 'rand-suffix': make_rand_suffix, }; let func = funcMap[mode]; if (!func) {