1-size.ts 925 B

123456789101112131415161718192021222324
  1. import { testSuites, workers, bClone } from './util';
  2. import { writeFileSync } from 'fs';
  3. import { join } from 'path';
  4. import { performance } from 'perf_hooks';
  5. import * as assert from 'uvu/assert';
  6. const sizePerf: Record<string, Record<string, [number, number]>> = {};
  7. testSuites({
  8. async main(file, name) {
  9. sizePerf[name] = {};
  10. for (const lib of (['fflate', 'pako', 'uzip', 'zlib'] as const)) {
  11. const clone = bClone(file);
  12. const ts = performance.now();
  13. sizePerf[name][lib] = [(await workers[lib].deflate([clone, { level: 9 }], [clone.buffer])).length, performance.now() - ts];
  14. }
  15. for (const lib of ['pako', 'uzip', 'zlib']) {
  16. // Less than 5% larger
  17. assert.ok(((sizePerf[name].fflate[0] - sizePerf[name][lib][0]) / sizePerf[name][lib][0]) < 0.05);
  18. }
  19. }
  20. }).then(() => {
  21. writeFileSync(join(__dirname, 'results', 'longTimings.json'), JSON.stringify(sizePerf, null, 2));
  22. })