mathjs/test/benchmark/prime.js

33 lines
1.1 KiB
JavaScript

const assert = require('assert')
const { isPrime } = require('../../')
const { Suite } = require('benchmark')
const primes = [2147483647, 87178291199, 4398042316799]
const notPrimes = [2199023255551, 8796093022207, 140737488355327]
const carmichaels = [41041, 825265, 321197185] // more challenging numbers
// validate that the function does what we think it does
const primesResults = primes.map(num => isPrime(num))
const notPrimesResults = notPrimes.map(num => isPrime(num))
const carmichaelsResults = carmichaels.map(num => isPrime(num))
assert(primesResults.every(result => result === true))
assert(notPrimesResults.every(result => result === false))
assert(carmichaelsResults.every(result => result === false))
new Suite()
.add('primes', () => {
primes.forEach(num => isPrime(num))
})
.add('not primes', () => {
notPrimes.forEach(num => isPrime(num))
})
.add('carmichaels', () => {
carmichaels.forEach(num => isPrime(num))
})
.on('cycle', function (event) {
console.log(String(event.target))
})
.on('complete', function () {
})
.run()