-
Notifications
You must be signed in to change notification settings - Fork 22
/
Copy pathbenchmark.spec.js
42 lines (39 loc) · 1.27 KB
/
benchmark.spec.js
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
const assert = require('assert')
const TEST_FILE = require('./data/test-suite-data.json')
const { PackageURL } = require('../src/package-url')
describe('PackageURL', () => {
it('Benchmarking the library', () => {
const iterations = 10000
const data = TEST_FILE.filter(obj => !obj.is_invalid)
const { length: dataLength } = data
const objects = []
for (let i = 0; i < iterations; i += dataLength) {
const delta = iterations - (i + dataLength)
if (delta < 0) {
objects.push(...data.slice(0, delta))
} else {
objects.push(...data)
}
}
const start = Date.now()
for (let i = 0; i < iterations; i += 1) {
const obj = objects[i]
const purl = new PackageURL(
obj.type,
obj.namespace,
obj.name,
obj.version,
obj.qualifiers,
obj.subpath
)
PackageURL.fromString(purl.toString())
}
const end = Date.now()
console.log(
`avg exec time of ${iterations} iterations (in ms): ${
(end - start) / iterations
}`
)
assert.ok(end - start > 0)
})
})