-
-
Notifications
You must be signed in to change notification settings - Fork 14
Expand file tree
/
Copy pathbench.ts
More file actions
108 lines (86 loc) · 2.69 KB
/
Copy pathbench.ts
File metadata and controls
108 lines (86 loc) · 2.69 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
import { readFileSync } from 'node:fs'
import { join } from 'node:path'
import { promisify } from 'node:util'
import {
gzip,
deflate,
brotliCompress,
inflate,
brotliDecompress,
gzipSync,
deflateSync,
brotliCompressSync,
gunzip,
} from 'node:zlib'
import { Bench, hrtimeNow } from 'tinybench'
import { compress as legacyCompress, uncompress as legacyUncompress } from 'legacy-snappy'
import { compress, uncompress, compressSync, uncompressSync } from '../index.js'
import { fileURLToPath } from 'node:url'
const gzipAsync = promisify(gzip)
const brotliCompressAsync = promisify(brotliCompress)
const deflateAsync = promisify(deflate)
const gunzipAsync = promisify(gunzip)
const inflateAsync = promisify(inflate)
const brotliDecompressAsync = promisify(brotliDecompress)
const compressV6 = promisify(legacyCompress)
const uncompressV6 = promisify(legacyUncompress)
const FIXTURE = readFileSync(join(fileURLToPath(import.meta.url), '..', '..', 'yarn.lock'))
const SNAPPY_COMPRESSED_FIXTURE = Buffer.from(compressSync(FIXTURE))
const GZIP_FIXTURE = gzipSync(FIXTURE)
const DEFLATED_FIXTURE = deflateSync(FIXTURE)
const BROTLI_COMPRESSED_FIXTURE = brotliCompressSync(FIXTURE)
const b = new Bench({
now: hrtimeNow,
})
b.add('snappy-compress', () => {
return compress(FIXTURE)
})
b.add('snappy-compress-sync', () => {
return compressSync(FIXTURE)
})
b.add('snappy-v6-compress', () => {
return compressV6(FIXTURE)
})
b.add('gzip-compress', () => {
return gzipAsync(FIXTURE)
})
b.add('deflate-compress', () => {
return deflateAsync(FIXTURE)
})
b.add('brotli-compress', () => {
return brotliCompressAsync(FIXTURE)
})
await b.run()
console.table(b.table())
const bUncompress = new Bench({
now: hrtimeNow,
})
const output = new Uint8Array(FIXTURE.length)
bUncompress.add('snappy-uncompress', () => {
return uncompress(SNAPPY_COMPRESSED_FIXTURE)
})
bUncompress.add('snappy-alloc-uncompress', () => {
return uncompress(SNAPPY_COMPRESSED_FIXTURE, { output: output })
})
bUncompress.add('snappy-sync-uncompress', () => {
return uncompressSync(SNAPPY_COMPRESSED_FIXTURE)
})
const output2 = new Uint8Array(FIXTURE.length)
bUncompress.add('snappy-sync-alloc-uncompress', () => {
return uncompressSync(SNAPPY_COMPRESSED_FIXTURE, { output: output2 })
})
bUncompress.add('snappy-v6-uncompress', () => {
// @ts-expect-error
return uncompressV6(SNAPPY_COMPRESSED_FIXTURE)
})
bUncompress.add('gzip-uncompress', () => {
return gunzipAsync(GZIP_FIXTURE)
})
bUncompress.add('deflate-uncompress', () => {
return inflateAsync(DEFLATED_FIXTURE)
})
bUncompress.add('brotli-uncompress', () => {
return brotliDecompressAsync(BROTLI_COMPRESSED_FIXTURE)
})
await bUncompress.run()
console.table(bUncompress.table())