mirror of
https://github.com/josdejong/mathjs.git
synced 2025-12-08 19:46:04 +00:00
55 lines
1.6 KiB
JavaScript
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()
|