mirror of
https://github.com/ianstormtaylor/slate.git
synced 2025-02-01 05:16:10 +01:00
8f9bfdac2b
* Use slate rather than relative path * Move benchmark to one dir * Use slate-* instead of relative path * Before and After Function * Remove un-necessary cross-env * Hard fix * Lint the hard fix * Reset memory in bench() * Working on Benchmark Frameworks * Rename to slate-dev-benchmark * Add packages * Fix prettier bug * Benchmark framework is in working * Do not log in test * max times test * mute logger in test * add hr time * Better support for maxTime; add support of split runs to save memory space * Fix maxTries * Add global.gc * Global gc for each bench * Better test interface * Test max-time * Test max-time done * Add Benchmark among packages * Starting to get benchmark running * Pure Node lib * Change babelrc for pure Node benchmark * Moving Benchmarks * Get benchmark and test running * Get benchmark for slate-html-serializer * add slate-react * add slate/changes * all benchmarks are converted * Run benchmark by yarn * Run benchmark with expose-gc * Annotate Bench.js * Do not bundle slate-dev-benchmark in rollup * Add annotation * Allow config file to enable part benchmark compare * Add config for compare * support compare.js * Do not re-allocate memory; due to a large heap taken influence result * Render with Decorations * get active marks at range * Fix bug in showing percents * Fix percent showing bug * chore: add more benches * Better output of benchmark * Fix linting * decoration and normal as different benchmark test * Fix deserialize benchmark * README.md * Fix Readme.md * README.md * block-spacing config * safer user config loading * use package.json to load package in test * Consistent linting * move components to parent directory * Annotation styling in package * margin line before multi-line block * Fix naive bug * Fix naive bug * Fix a blank line * only log user and hr * Better name * Better annotation for runBundleTasks * Fix typo * Better logger * Move async to test * Omit skip * Only log the user space time * Single line async sleep * file name fix * Fix annotation * Better output of compare * Remove get-characters(-at-range) benchmarks * Restore emoji * Capitalize types * Remove compare to another area * Add grep and config interface * Linting files * Linting benchmarks * Linting benchmarks * Update yarn.lock
58 lines
1.0 KiB
JavaScript
58 lines
1.0 KiB
JavaScript
const { writeFileSync } = require('fs')
|
|
|
|
function convertRepo(report) {
|
|
const result = []
|
|
|
|
for (const name in report) {
|
|
const suite = report[name]
|
|
|
|
result.push({
|
|
name,
|
|
type: 'suite',
|
|
benchmarks: convertSuite(suite),
|
|
})
|
|
}
|
|
return result
|
|
}
|
|
|
|
function convertSuite(suite) {
|
|
const result = []
|
|
|
|
for (const name in suite) {
|
|
const bench = suite[name]
|
|
const { user, cycles } = bench
|
|
|
|
result.push({
|
|
name,
|
|
type: 'bench',
|
|
elapsed: user,
|
|
iterations: cycles,
|
|
ops: 1000 * cycles / user,
|
|
...bench,
|
|
})
|
|
}
|
|
return result
|
|
}
|
|
|
|
const IS_COMPARE = process.env.COMPARE
|
|
const filePath = IS_COMPARE
|
|
? './tmp/benchmark-comparison.json'
|
|
: './tmp/benchmark-baseline.json'
|
|
|
|
function generateReport(repo) {
|
|
repo
|
|
.run()
|
|
.then(report => {
|
|
const data = JSON.stringify(convertRepo(report))
|
|
writeFileSync(filePath, data)
|
|
return report
|
|
})
|
|
.then(report => {
|
|
if (IS_COMPARE) {
|
|
require('./compare')
|
|
}
|
|
})
|
|
}
|
|
|
|
module.exports = { generateReport }
|