55 lines
1.6 KiB
JavaScript

import { Bench } from 'tinybench'
import { abs, DenseMatrix, map, ones, random, round } from '../../lib/esm/index.js'
import { formatTaskResult } from './utils/formatTaskResult.js'
const genericMatrix = map(ones(10, 10, 'dense'), _ => round(random(-5, 5), 2))
const numberMatrix = new DenseMatrix(genericMatrix, 'number')
const array = genericMatrix.toArray()
// console.log('data', array)
// console.log('abs(data)', abs(array))npm run
const bench = new Bench({ time: 100, iterations: 100 })
.add('abs(genericMatrix)', () => {
abs(genericMatrix)
})
.add('abs(array)', () => {
abs(array)
})
.add('abs(numberMatrix)', () => {
abs(numberMatrix)
})
.add('genericMatrix.map(abs)', () => {
genericMatrix.map(abs)
})
.add('numberMatrix.map(abs)', () => {
numberMatrix.map(abs)
})
.add('map(genericMatrix, abs)', () => {
map(genericMatrix, abs)
})
.add('map(numberMatrix, abs)', () => {
map(numberMatrix, abs)
})
.add('map(array, abs)', () => {
map(array, abs)
})
.add('map(array, abs.signatures.number)', () => {
map(array, abs.signatures.number)
})
.add('genericMatrix.map(abs.signatures.number)', () => {
genericMatrix.map(abs.signatures.number)
})
.add('numberMatrix.map(abs.signatures.number)', () => {
numberMatrix.map(abs.signatures.number)
})
.add('genericMatrix iterate', () => {
const result = genericMatrix.clone()
for (const v of genericMatrix) {
result.set(v.index, abs(v.value))
}
})
bench.addEventListener('cycle', (event) => console.log(formatTaskResult(bench, event.task)))
await bench.run()