-
Notifications
You must be signed in to change notification settings - Fork 807
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
docs: added performance benchmarking doc
- Loading branch information
1 parent
2499708
commit 7ed1fc6
Showing
1 changed file
with
53 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,53 @@ | ||
|
||
# Performance Benchmark Testing Guide | ||
|
||
Benchmark tests are intended to measure performance of small units of code. | ||
|
||
It is recommended that operations that have a high impact on the performance of the SDK (or potential for) are accompanied by a benchmark test. This helps end-users understand the performance trend over time, and it also helps maintainers catch performance regressions. | ||
|
||
Benchmark tests are run automatically with every release, and the results are available at https://open-telemetry.github.io/opentelemetry-js/benchmark. | ||
|
||
## Running benchmark tests | ||
|
||
Performance benchmark tests can be run from the root for all modules or from a single module directory only for that module: | ||
|
||
``` bash | ||
# benchmark all modules | ||
npm run test:bench | ||
|
||
# benchmark a single module | ||
cd packages/opentelemetry-sdk-trace-base | ||
npm run test:bench | ||
``` | ||
|
||
## Adding a benchmark test | ||
|
||
Unlike unit tests, benchmark tests should be written in plain JavaScript (not Typescript). | ||
|
||
Add a new test file in folder `test/performance/benchmark` using the following as a template: | ||
|
||
``` javascript | ||
const Benchmark = require('benchmark'); | ||
|
||
const suite = new Benchmark.Suite(); | ||
|
||
suite.on('cycle', event => { | ||
console.log(String(event.target)); | ||
}); | ||
|
||
suite.add('new benchmark test', function() { | ||
// write code to test ... | ||
}); | ||
|
||
suite.run(); | ||
``` | ||
|
||
## Automatically running benchmark tests | ||
|
||
If you want your test to run automatically with every release (to track trend over time), register the new test file by requiring it in `test/performance/benchmark/index.js`. | ||
|
||
Add the `test:bench` script in package.json, if the module does not contain. | ||
|
||
``` json | ||
"test:bench": "node test/performance/benchmark/index.js" | ||
``` |