6c9e23aab93f8b239d2e4505f7e30aa9bf81a16a
[poolifier.git] / benchmarks / internal / benchmark-utils.js
1 async function runPoolifierTest (pool, { tasks, workerData }) {
2 return new Promise((resolve, reject) => {
3 let executions = 0
4 for (let i = 1; i <= tasks; i++) {
5 pool
6 .execute(workerData)
7 .then(res => {
8 executions++
9 if (executions === tasks) {
10 return resolve('FINISH')
11 }
12 return null
13 })
14 .catch(err => {
15 console.error(err)
16 return reject(err)
17 })
18 }
19 })
20 }
21
22 function jsonIntegerSerialization (n) {
23 for (let i = 0; i < n; i++) {
24 const o = {
25 a: i
26 }
27 JSON.stringify(o)
28 }
29 }
30
31 function generateRandomInteger (max, min = 0) {
32 max = Math.floor(max)
33 if (min) {
34 min = Math.ceil(min)
35 return Math.floor(Math.random() * (max - min + 1)) + min
36 }
37 return Math.floor(Math.random() * (max + 1))
38 }
39
40 /**
41 * Intentionally inefficient implementation.
42 *
43 * @param {number} n
44 * @returns {number}
45 */
46 function fibonacci (n) {
47 if (n <= 1) return 1
48 return fibonacci(n - 1) + fibonacci(n - 2)
49 }
50
51 const LIST_FORMATTER = new Intl.ListFormat('en-US', {
52 style: 'long',
53 type: 'conjunction'
54 })
55
56 module.exports = {
57 runPoolifierTest,
58 jsonIntegerSerialization,
59 generateRandomInteger,
60 fibonacci,
61 LIST_FORMATTER
62 }