73 lines
2.2 KiB
Plaintext
73 lines
2.2 KiB
Plaintext
ShrinkEventBus 2.0 Benchmark Report
|
|
===================================
|
|
|
|
Date: 2026-08-24
|
|
Unity: 2022.3.62f3
|
|
Platform: WindowsEditor, Play Mode
|
|
Host: independent ShrinkEventBusHost, Inline scheduler
|
|
Diagnostics: independent Host; detailed global capture does not observe it
|
|
Final run: iter=10,000,000 mass=1,000,000 reg=5,000, three rounds
|
|
|
|
Median results
|
|
--------------
|
|
|
|
Post / 0 handlers
|
|
129,282,649 ops/s
|
|
|
|
Post / 1 handler
|
|
67,249,586 ops/s
|
|
|
|
Post / 8 handlers, struct payload
|
|
35,024,798 ops/s
|
|
|
|
Post / 8 handlers, class payload
|
|
25,321,199 ops/s
|
|
|
|
Post / 30 handlers
|
|
10,823,612 ops/s
|
|
|
|
Post / canceled skips 10
|
|
9,029,517 ops/s
|
|
|
|
PostAsync / 1 async handler
|
|
5,909,446 ops/s
|
|
|
|
Generated Attach + Dispose
|
|
674,291 ops/s
|
|
|
|
Struct hot path allocation
|
|
0 B / 10,000,000 Post operations
|
|
|
|
Comparison
|
|
----------
|
|
|
|
Supplied MessagePipe chart, class payload, 8 handlers:
|
|
25,639,260 publish/s
|
|
|
|
ShrinkEventBus 2.0, class payload, 8 handlers:
|
|
25,321,199 publish/s median
|
|
|
|
ShrinkEventBus 2.0, struct payload, 8 handlers:
|
|
35,024,798 publish/s median
|
|
|
|
Supplied ShrinkEventBus 1.3.0 sample:
|
|
0 handlers: 8,971,378 -> 129,282,649 ops/s
|
|
1 handler: 6,132,242 -> 67,249,586 ops/s
|
|
30 handlers: 258,805 -> 10,823,612 ops/s
|
|
canceled skips 10: 1,894,776 -> 9,029,517 ops/s
|
|
1 async handler: 1,168,634 -> 5,909,446 ops/s
|
|
instance scan/register: 76,353 -> 674,291 generated Attach/s
|
|
|
|
Implementation notes
|
|
--------------------
|
|
|
|
- Inline buses use a dedicated implementation so the JIT can inline the channel dispatch path.
|
|
- Non-cancelable, all-sync channels build a priority-ordered multicast dispatcher when subscriptions change.
|
|
- ShrinkPostResult stores Accepted/Handled/Canceled/Failure in one 32-bit value.
|
|
- Generic bus slots and handler snapshots are published with release semantics and read without a publish lock.
|
|
- Mixed sync/async channels, cancelable events, queued schedulers and PostAsync retain the full semantic path.
|
|
|
|
Results are local editor measurements, not cross-device guarantees. The supplied MessagePipe chart was
|
|
produced by a different runtime and machine; the class-payload comparison only establishes the same
|
|
order of throughput. Recheck on the target Player and hardware before release.
|