UNPKG

proxyequal

Version:

A proxy based usage tracking and comparison

117 lines (95 loc) 2.29 kB
/* eslint-disable flowtype/require-valid-file-annotation */ const Benchmark = require('benchmark'); const {proxyShallowEqual, proxyCompare, proxyEqual} = require('../'); const suite = new Benchmark.Suite(); const ab1 = [".e", ".c", ".e.a", ".e.a.b", ".a", '.b', ".e.a.c"]; const ab2 = [".e", ".ee", ".eee", ".e.a.b", ".a", ".a.a.a", ".eee.e", ".eee.ee", ".eee.eee", ".eee.e.e"]; const RFACTOR = 1; const a1 = Array(RFACTOR).fill(ab1).reduce((acc, i) => [...acc, ...i], []); const a2 = Array(RFACTOR).fill(ab2).reduce((acc, i) => [...acc, ...i], []); const a3 = [ '.eee', '.eee.eee', '.eee.ee', '.ee', '.e', '.e.a.b', '.a', '.a.a.a', '.eee.e', '.eee.e.e' ]; function theNextDot(a, b, start) { for (let i = start; ; ++i) { const ac = a.charCodeAt(i); const bc = b.charCodeAt(i); if (!ac && !bc) return 0; if (ac && !bc) return; if (!ac && bc) return -1; if (ac !== bc) { if (ac === '.') { return -1; } if (bc === '.') { return 1; } } } return 0; } const kSort = (a, b) => { const r = (function () { const al = a.length; const bl = b.length; const d = 1; //Math.abs(al - bl); if (al < bl) { return b[al] === '.' && b.indexOf(a) === 0 ? -1 : dSort(a, b); } if (al > bl) { return a[bl] === '.' && a.indexOf(b) === 0 ? 1 : dSort(a, b); } return 0; })(); console.log(a, b, r); return r; }; const dSort = (a, b) => { console.log(a, b); for (let i = 0; ; ++i) { const ac = a.charCodeAt(i); const bc = b.charCodeAt(i); if (!ac && !bc) return 0; if (ac && !bc) return 1; if (!ac && bc) return -1; if (ac > bc) return 1; if (ac < bc) return -1; } }; function ksort(a) { return [...a].sort(kSort) } function dsort(a) { return [...a].sort(dSort) } // console.log(a1); // console.log(ksort(a1)); // console.log(dsort(a1)); // console.log('---'); //console.log(a2); console.log(ksort(a3)); // console.log(dsort(a2)); return; suite.add('kash-sort a1', () => { ksort(a1) }); suite.add('dai-sort a1', () => { dsort(a1) }); suite.add('kash-sort a2', () => { ksort(a2) }); suite.add('dai-sort a2', () => { dsort(a2) }); suite.on('cycle', e => console.log(String(e.target))); suite.run({async: true});