Performance testing
Shields has some basic tooling available to help you get started with performance testing.
Benchmarking the badge generation
Want to micro-benchmark a section of the code responsible for generating the static badges? Follow these two simple steps:
- Surround the code you want to time with
console.timeandconsole.timeEndstatements. For example:
console.time('makeBadge')
const svg = makeBadge(badgeData)
console.timeEnd('makeBadge')
- Run
npm run benchmark:badgein your terminal. An average timing will be displayed!
If you want to change the number of iterations in the benchmark, you can modify
the values specified by the benchmark:badge script in package.json. If
you want to benchmark a specific code path not covered by the static badge, you
can modify the badge URL in scripts/benchmark-performance.js.
Profiling the full code
Want to have an overview of how the entire application is performing? Simply
run npm run profile:server in your terminal. This will start the
backend server (i.e. without the frontend) in profiling mode and any requests
you make on localhost:8080 will generate data in a file with a name
similar to isolate-00000244AB6ED3B0-11920-v8.log.
You can then make use of this profiling data in various tools, for example flamebearer:
npm install -g flamebearer
node --prof-process --preprocess -j isolate-00000244AB6ED3B0-11920-v8.log | flamebearer
An example output is the following:
