48 lines
1.5 KiB
Markdown
48 lines
1.5 KiB
Markdown
|
# Benchmarks
|
||
|
|
||
|
## Running the benchmarks
|
||
|
|
||
|
From the parent directory, run
|
||
|
|
||
|
```bash
|
||
|
npm run-script benchmark
|
||
|
```
|
||
|
|
||
|
The above script supports the following arguments:
|
||
|
|
||
|
* `--benchmarks=...`: A semicolon-separated list of benchmark names. These names
|
||
|
will be mapped to file names in this directory by appending `.js`.
|
||
|
|
||
|
## Adding benchmarks
|
||
|
|
||
|
The steps below should be followed when adding new benchmarks.
|
||
|
|
||
|
0. Decide on a name for the benchmark. This name will be used in several places.
|
||
|
This example will use the name `new_benchmark`.
|
||
|
|
||
|
0. Create files `new_benchmark.cc` and `new_benchmark.js` in this directory.
|
||
|
|
||
|
0. Copy an existing benchmark in `binding.gyp` and change the target name prefix
|
||
|
and the source file name to `new_benchmark`. This should result in two new
|
||
|
targets which look like this:
|
||
|
|
||
|
```gyp
|
||
|
{
|
||
|
'target_name': 'new_benchmark',
|
||
|
'sources': [ 'new_benchmark.cc' ],
|
||
|
'includes': [ '../except.gypi' ],
|
||
|
},
|
||
|
{
|
||
|
'target_name': 'new_benchmark_noexcept',
|
||
|
'sources': [ 'new_benchmark.cc' ],
|
||
|
'includes': [ '../noexcept.gypi' ],
|
||
|
},
|
||
|
```
|
||
|
|
||
|
There should always be a pair of targets: one bearing the name of the
|
||
|
benchmark and configured with C++ exceptions enabled, and one bearing the
|
||
|
same name followed by the suffix `_noexcept` and configured with C++
|
||
|
exceptions disabled. This will ensure that the benchmark can be written to
|
||
|
cover both the case where C++ exceptions are enabled and the case where they
|
||
|
are disabled.
|