3-multiperf.ts 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. import { testSuites } from './util';
  2. import { deflateSync, inflateSync } from '..';
  3. import { deflateRawSync, inflateRawSync } from 'zlib';
  4. import { deflateRaw, inflateRaw } from 'pako';
  5. import * as UZIP from 'uzip';
  6. import * as tinf from 'tiny-inflate';
  7. import { writeFileSync } from 'fs';
  8. import { join } from 'path';
  9. const cache: Record<string, Buffer> = {};
  10. testSuites({
  11. 'fflate compress 5x': file => {
  12. for (let i = 0; i < 5; ++i) deflateSync(file);
  13. },
  14. 'fflate decompress 5x': (file, name, resetTimer) => {
  15. cache[name] = deflateRawSync(file), resetTimer();
  16. for (let i = 0; i < 5; ++i) {
  17. inflateSync(cache[name]);
  18. }
  19. },
  20. 'pako compress 5x': file => {
  21. for (let i = 0; i < 5; ++i) deflateRaw(file);
  22. },
  23. 'pako decompress 5x': (_, name) => {
  24. for (let i = 0; i < 5; ++i) inflateRaw(cache[name]);
  25. },
  26. 'uzip compress 5x': file => {
  27. for (let i = 0; i < 5; ++i) UZIP.deflateRaw(file);
  28. },
  29. 'uzip decompress 5x': (_, name) => {
  30. for (let i = 0; i < 5; ++i) UZIP.inflateRaw(cache[name]);
  31. },
  32. 'tiny-inflate decompress 5x': (file, name) => {
  33. for (let i = 0; i < 5; ++i) tinf(cache[name], new Uint8Array(file.length));
  34. },
  35. 'zlib compress 5x': file => {
  36. for (let i = 0; i < 5; ++i) deflateRawSync(file);
  37. },
  38. 'zlib decompress 5x': (_, name) => {
  39. for (let i = 0; i < 5; ++i) inflateRawSync(cache[name]);
  40. }
  41. }).then(perf => {
  42. writeFileSync(join(__dirname, 'results', 'multiTimings.json'), JSON.stringify(perf, null, 2));
  43. })