Py-notify Benchmarking Results

All benchmarking is currently done on an AMD Athlon XP 2600+ machine with 512 MB of RAM and Python 2.3. Execution time (the rightmost column) is in seconds. All benchmarking tests are executed 5 times and the best result is chosen.

Benchmarks that didn’t exist in previous versions are still backported if possible. I.e. results for earlier versions are obtained unless a bug prevents that.

Benchmarking results are non-deterministic, so they can vary slightly between versions even if no relevant changes had been made between them. Additionally, Py-notify can sometimes become slower, because of certain bug-fixes.

Results for the versions 0.1.13–0.1.15 are the same as for 0.1.12; for 0.1.9 are the same as for 0.1.8.

Signal Emission

Note that Py-notify signals are currently considerably slower than GObject signals. That might be important for uses in time-critical code.

Function Handlers

100,000 emissions of a signal with 4 function handlers. All handlers but first are additionally passed arguments specified at connection time.

Py-notify 0.2
 
2.45
PyGTK 2.8.6
 
0.79
Py-notify 0.1.12
 
2.55
Py-notify 0.1.11
 
2.54
Py-notify 0.1.10
 
3.61
Py-notify 0.1.8
 
3.60
Py-notify 0.1.7
 
3.53
Py-notify 0.1.6
 
3.49
Py-notify 0.1.5
 
3.82
Py-notify 0.1.4
 
3.85
Py-notify 0.1.3
 
3.88
Py-notify 0.1.2
 
4.31

Method Handlers

100,000 emissions of a signal with 4 method handlers. All handlers but first are additionally passed arguments specified at connection time.

Py-notify 0.2
 
3.06
PyGTK 2.8.6
 
0.87
Py-notify 0.1.12
 
3.16
Py-notify 0.1.11
 
3.14
Py-notify 0.1.10
 
4.28
Py-notify 0.1.8
 
4.30
Py-notify 0.1.7
 
4.17
Py-notify 0.1.6
 
4.18
Py-notify 0.1.5
 
4.47
Py-notify 0.1.4
 
4.49
Py-notify 0.1.3
 
4.92
Py-notify 0.1.2
 
6.09

Compound Conditions

10,000 iterations of state changes in a complex compound condition tree. Each iteration involves 10 changes in ‘base’ conditions’ states; most changes are also propagated to a compound condition or several.

Py-notify 0.2
 
3.37
Py-notify 0.1.12
 
3.38
Py-notify 0.1.11
 
3.75
Py-notify 0.1.10
 
5.35
Py-notify 0.1.8
 
5.61
Py-notify 0.1.7
 
5.93
Py-notify 0.1.6
 
6.37