-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathbench-hash.js
More file actions
96 lines (84 loc) · 2.19 KB
/
Copy pathbench-hash.js
File metadata and controls
96 lines (84 loc) · 2.19 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
import { Bench } from './lib/bench.js'
import { Digest } from './lib/hash.js'
const md5 = new Digest('md5')
const sha256 = new Digest('sha256')
const sha1 = new Digest('sha1')
const encoder = new TextEncoder()
const hello = encoder.encode('hello')
const expected = [
93, 65, 64, 42, 188, 75, 42, 118, 185, 113, 157, 145, 16, 23, 197, 146
]
const expectedsha1 = [
170, 244, 198, 29, 220, 197, 232, 162, 218, 190, 222, 15, 59, 72, 44, 217,
174, 169, 67, 77
]
const expectedsha256 = [
44, 242, 77, 186, 95, 176, 163, 14, 38, 232, 59, 42, 197, 185, 226, 158, 27,
22, 30, 92, 31, 167, 66, 94, 115, 4, 51, 98, 147, 139, 152, 36
]
md5.hash_string('hello').forEach((v, i) => assert(v === expected[i]))
md5.hash(hello).forEach((v, i) => assert(v === expected[i]))
sha256.hash_string('hello').forEach((v, i) => assert(v === expectedsha256[i]))
sha256.hash(hello).forEach((v, i) => assert(v === expectedsha256[i]))
sha1.hash_string('hello').forEach((v, i) => assert(v === expectedsha1[i]))
sha1.hash(hello).forEach((v, i) => assert(v === expectedsha1[i]))
const iter = parseInt(args[0] || '3', 10)
const runs = parseInt(args[1] || '1000000', 10)
let total = parseInt(args[2] || '1', 10)
const bench = new Bench()
while (total--) {
{
for (let i = 0; i < iter; i++) {
bench.start('sha1-string')
for (let j = 0; j < runs; j++) {
sha1.hash_string('hello')
}
bench.end(runs)
}
}
{
for (let i = 0; i < iter; i++) {
bench.start('sha1-buffer')
for (let j = 0; j < runs; j++) {
sha1.hash(hello)
}
bench.end(runs)
}
}
{
for (let i = 0; i < iter; i++) {
bench.start('md5-string')
for (let j = 0; j < runs; j++) {
md5.hash_string('hello')
}
bench.end(runs)
}
}
{
for (let i = 0; i < iter; i++) {
bench.start('md5-buffer')
for (let j = 0; j < runs; j++) {
md5.hash(hello)
}
bench.end(runs)
}
}
{
for (let i = 0; i < iter; i++) {
bench.start('sha256-string')
for (let j = 0; j < runs; j++) {
sha256.hash_string('hello')
}
bench.end(runs)
}
}
{
for (let i = 0; i < iter; i++) {
bench.start('sha256-buffer')
for (let j = 0; j < runs; j++) {
sha256.hash(hello)
}
bench.end(runs)
}
}
}