Add basic benchmark (#3038)
* Add basic benchmark * Add basic documentation for how to run and add tests/benchmarks * Update benchmark example output * Add changelog entry Co-authored-by: zneix <zneix@zneix.eu>
This commit is contained in:
@@ -0,0 +1,88 @@
|
||||
# Test and Benchmark
|
||||
|
||||
Chatterino includes a set of unit tests and benchmarks. These can be built using cmake by adding the `-DBUILD_TESTS=On` and `-DBUILD_BENCHMARKS=On` flags respectively.
|
||||
|
||||
## Adding your own test
|
||||
|
||||
1. Create a new file for the file you're adding tests for. If you're creating tests for `src/providers/emoji/Emojis.cpp`, create `tests/src/Emojis.cpp`.
|
||||
2. Add the newly created file to `tests/CMakeLists.txt` in the `test_SOURCES` variable (see the comment near it)
|
||||
|
||||
See `tests/src/Emojis.cpp` for simple tests you can base your tests off of.
|
||||
|
||||
Read up on http://google.github.io/googletest/primer.html to figure out how GoogleTest works.
|
||||
|
||||
## Building and running tests
|
||||
|
||||
```sh
|
||||
mkdir build-tests
|
||||
cd build-tests
|
||||
cmake -DBUILD_TESTS=On ..
|
||||
make
|
||||
./bin/chatterino-test
|
||||
```
|
||||
|
||||
### Example output
|
||||
|
||||
```
|
||||
[==========] Running 26 tests from 8 test suites.
|
||||
[----------] Global test environment set-up.
|
||||
[----------] 2 tests from AccessGuardLocker
|
||||
[ RUN ] AccessGuardLocker.NonConcurrentUsage
|
||||
[ OK ] AccessGuardLocker.NonConcurrentUsage (0 ms)
|
||||
[ RUN ] AccessGuardLocker.ConcurrentUsage
|
||||
[ OK ] AccessGuardLocker.ConcurrentUsage (686 ms)
|
||||
[----------] 2 tests from AccessGuardLocker (686 ms total)
|
||||
|
||||
[----------] 4 tests from NetworkCommon
|
||||
[ RUN ] NetworkCommon.parseHeaderList1
|
||||
[ OK ] NetworkCommon.parseHeaderList1 (0 ms)
|
||||
[ RUN ] NetworkCommon.parseHeaderListTrimmed
|
||||
[ OK ] NetworkCommon.parseHeaderListTrimmed (0 ms)
|
||||
[ RUN ] NetworkCommon.parseHeaderListColonInValue
|
||||
...
|
||||
[ RUN ] TwitchAccount.NotEnoughForMoreThanOneBatch
|
||||
[ OK ] TwitchAccount.NotEnoughForMoreThanOneBatch (0 ms)
|
||||
[ RUN ] TwitchAccount.BatchThreeParts
|
||||
[ OK ] TwitchAccount.BatchThreeParts (0 ms)
|
||||
[----------] 3 tests from TwitchAccount (2 ms total)
|
||||
|
||||
[----------] Global test environment tear-down
|
||||
[==========] 26 tests from 8 test suites ran. (10297 ms total)
|
||||
[ PASSED ] 26 tests.
|
||||
```
|
||||
|
||||
## Adding your own benchmark
|
||||
|
||||
1. Create a new file for the file you're adding benchmark for. If you're creating benchmarks for `src/providers/emoji/Emojis.cpp`, create `benchmarks/src/Emojis.cpp`.
|
||||
2. Add the newly created file to `benchmarks/CMakeLists.txt` in the `benchmark_SOURCES` variable (see the comment near it)
|
||||
|
||||
See `benchmarks/src/Emojis.cpp` for simple benchmark you can base your benchmarks off of.
|
||||
|
||||
## Building and running benchmarks
|
||||
|
||||
```sh
|
||||
mkdir build-benchmarks
|
||||
cd build-benchmarks
|
||||
cmake -DBUILD_BENCHMARKS=On ..
|
||||
make
|
||||
./bin/chatterino-benchmark
|
||||
```
|
||||
|
||||
### Example output
|
||||
|
||||
```
|
||||
2021-07-18T13:12:11+02:00
|
||||
Running ./bin/chatterino-benchmark
|
||||
Run on (12 X 4000 MHz CPU s)
|
||||
CPU Caches:
|
||||
L1 Data 32 KiB (x6)
|
||||
L1 Instruction 32 KiB (x6)
|
||||
L2 Unified 256 KiB (x6)
|
||||
L3 Unified 15360 KiB (x1)
|
||||
Load Average: 2.86, 3.08, 3.51
|
||||
***WARNING*** CPU scaling is enabled, the benchmark real time measurements may be noisy and will incur extra overhead.
|
||||
--------------------------------------------------------------
|
||||
Benchmark Time CPU Iterations
|
||||
--------------------------------------------------------------
|
||||
BM_ShortcodeParsing 2394 ns 2389 ns 278933
|
||||
```
|
||||
Reference in New Issue
Block a user