benchmark_optional_and_expected
Howto Perform a Benchmark
In bash you could execute this one liner directly in the root directory of iceoryx.
cd iceoryx
for i in $(seq 0 3); do
echo Optimization level $i
g++ iceoryx_examples/benchmark_optional_and_expected/benchmark_optional_and_expected.cpp iceoryx_hoofs/source/units/duration.cpp -Iiceoryx_hoofs/include -Iiceoryx_hoofs/platform/linux/include -pthread -O$i
./a.out
done
If you compile it with our default cmake settings you would only compile it in
release mode which is naturally faster than debug mode since it does not inject debug symbols and uses optimization level -O2.
This shell command on the other hand does compile the benchmark for all 4 optimization
levels from -O0 to -O3 and prints the result for every level.
Results (obtained from gcc-10.1.0)
How many calls could be performed. Higher is better.
Optimization Level -O0
| Test Case | Plain | Optional | Expected |
|---|---|---|---|
| simpleReturn | 225524291 | 47035725 | |
| popFromFiFo | 138717750 | 26948663 | |
| complexErrorValue | 140045308 | 14254503 | |
| largeObject | 143401942 | 27128388 | 12922971 |
| largeObjectComplexCTor | 463355 | 26493097 | 13212906 |
Optimization Level -O1
| Test Case | Plain | Optional | Expected |
|---|---|---|---|
| simpleReturn | 646117228 | 906108218 | |
| popFromFiFo | 295797403 | 329602169 | |
| complexErrorValue | 359035415 | 184509271 | |
| largeObject | 379375596 | 379646378 | 64153014 |
| largeObjectComplexCTor | 2614313 | 347282395 | 64807330 |
Optimization Level -O2
| Test Case | Plain | Optional | Expected |
|---|---|---|---|
| simpleReturn | 639481388 | 906377309 | |
| popFromFiFo | 580475112 | 637568187 | |
| complexErrorValue | 566417871 | 623039921 | |
| largeObject | 615844467 | 656525440 | 450771530 |
| largeObjectComplexCTor | 446405409 | 637818315 | 517100558 |
Optimization Level -O3
| Test Case | Plain | Optional | Expected |
|---|---|---|---|
| simpleReturn | 644953494 | 887507023 | |
| popFromFiFo | 580091861 | 585706644 | |
| complexErrorValue | 566601028 | 619879032 | |
| largeObject | 578625649 | 462344358 | 463635845 |
| largeObjectComplexCTor | 445014611 | 453039198 | 521274398 |