Thomas Haller
201628f87f
gobject/performance: improve "performance-run.sh" script
...
- fix and improve usage output for "performance-run.sh" script.
- add a sleep after compilation. It seems to me, that the first run
usually performs better, which might be because the temperature of the
CPU raises and the CPU gets throttled. Unclear whether that is really
the case, but add a sleep so that all runs start under similar
conditions where the CPU was idle for a moment.
2025-02-26 12:22:24 +01:00
Thomas Haller
4d5047e0e7
tests/performance: add performance-run.sh script for running performance test
...
The main use of the performance test is to run it for two (or more) commits
and compare the results. Doing that manually, is cumbersome.
Add a (very hacky) script to help with that. For usage, see the comment
on top of the script.
Example:
# first:
meson build -Dprefix=/tmp/glib/ -Db_lto=true --buildtype release -Ddebug=true
# then:
GLIB_PERFORMANCE_FACTOR=17.06 \
PERF='perf stat -r 4 -B' \
PATCH="2.80.0..th/performance" \
COMMITS="2.79.3 2.80.0" \
/tmp/performance-run.sh -s 1 property-get property-set
This will build the requested $COMMITS and print something like:
...
>>> combined result > /tmp/glib-performance-output.all
Running test property-get
property-get: Property get per second: 35742719 37208288 (+4.1%)
Running test property-set
property-set: Property set per second: 32341232 36942399 (+14.2%)
Running test property-get
property-get: Property get per second: 36934401 37143479 (+0.566%)
Running test property-set
property-set: Property set per second: 38046387 38165548 (+0.313%)
Running test property-get
property-get: Property get per second: 34759576 36359761 (+4.6%)
Running test property-set
property-set: Property set per second: 35262505 37651733 (+6.78%)
Running test property-get
property-get: Property get per second: 37014537 32870906 (-11.2%)
Running test property-set
property-set: Property set per second: 36633026 38216846 (+4.32%)
Performance counter stats for './build/gobject/tests/performance/performance -s 1 property-get property-set' (4 runs):
1,312.18 msec task-clock:u # 1.000 CPUs utilized ( +- 4.82% )
0 context-switches:u # 0.000 /sec
0 cpu-migrations:u # 0.000 /sec
121 page-faults:u # 92.213 /sec ( +- 0.24% )
5,221,701,009 cycles:u # 3.979 GHz ( +- 2.61% )
19,035,814,175 instructions:u # 3.65 insn per cycle ( +- 0.00% )
4,335,306,010 branches:u # 3.304 G/sec ( +- 0.00% )
13,031 branch-misses:u # 0.00% of all branches ( +- 4.17% )
TopdownL1 # 10.3 % tma_backend_bound
# 5.3 % tma_bad_speculation
# 11.4 % tma_frontend_bound
# 73.1 % tma_retiring ( +- 2.15% )
[1] 1.3127 +- 0.0634 seconds time elapsed ( +- 4.83% )
[2] 1.2631 +- 0.0253 seconds time elapsed ( +- 2.00% )
property-get: Property get per second: 35742719 , 36934401 , 34759576 , 37014537 ; 37208288 , 37143479 , 36359761 , 32870906 ;
property-set: Property set per second: 32341232 , 38046387 , 35262505 , 36633026 ; 36942399 , 38165548 , 37651733 , 38216846 ;
2024-03-18 13:56:03 +00:00